java为什么有编译时异常
‘壹’ 常见java运行时异常有哪些
1,java.lang.NullPointerException
这个异常的解释是 "程序遇上了空指针 ",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。
2,java.lang.ClassNotFoundException
异常的解释是"指定的类不存在",这里主要考虑一下类的名称和路径是否正确即可
3,java.lang.
这个异常的解释是"数组下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了.
4,java.lang.NoSuchMethodError
方法不存在错误。当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。
5,java.lang.IndexOutOfBoundsException
索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。
6,java.lang.NumberFormatException
数字格式异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。
7,java.sql.SQLException
Sql语句执行异常
8,java.io.IOException
输入输出异常
9,java.lang.IllegalArgumentException
方法参数错误
10java.lang.IllegalAccessException
无访问权限异常
(1)java为什么有编译时异常扩展阅读:
Java技术应用领域:
1、Android应用
许多的 Android应用都是Java程序员开发者开发。虽然 Android运用了不同的JVM以及不同的封装方式,但是代码还是用Java语言所编写。相当一部分的手机中都支持JAVA游戏,这就使很多非编程人员都认识了JAVA。
2、在金融业应用的服务器程序
Java在金融服务业的应用非常广泛,很多第三方交易系统、银行、金融机构都选择用Java开发,因为相对而言,Java较安全 。大型跨国投资银行用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目。
3、网站
Java 在电子商务领域以及网站开发领域占据了一定的席位。开发人员可以运用许多不同的框架来创建web项目,SpringMVC,Struts2.0以及frameworks。即使是简单的 servlet,jsp和以struts为基础的网站在政府项目中也经常被用到。例如医疗救护、保险、教育、国防以及其他的不同部门网站都是以Java为基础来开发的。
4、嵌入式领域
Java在嵌入式领域发展空间很大。在这个平台上,只需130KB就能够使用Java技术(在智能卡或者传感器上)。
5、大数据技术
Hadoop以及其他大数据处理技术很多都是用Java,例如Apache的基于Java的HBase和Accumulo以及 ElasticSearchas。
6、高频交易的空间
Java平台提高了这个平台的特性和即使编译,他同时也能够像 C++ 一样传递数据。正是由于这个原因,Java成为的程序员编写交易平台的语言,因为虽然性能不比C++,但开发人员可以避开安全性,可移植性和可维护性等问题。
7、科学应用
Java在科学应用中是很好选择,包括自然语言处理。最主要的原因是因为Java比C++或者其他语言相对其安全性、便携性、可维护性以及其他高级语言的并发性更好。
‘贰’ java 编译异常
错误代码:400 400错误是由于不正确的请求造成的,说明正在搜索的网页可能已经删除、更名或暂时不可用。 错误代码:401.1 401.1错误是由于登陆失败造成的,说明没有权限查看该目录或网页。 错误代码:401.2 401.2错误是由于服务器配置问题而导致登陆失败,由于服务器端脚本未能正确发送 WWW 身份验证头文件字段。如果要通过 Active Server Pages 脚本完成此项任务,可以使用"Response"对象的"AddHeader"方法来要求客户端用特定身份验证方法访问资源。 错误代码:401.3 401.3错误是由于资源上的 ACL 导致未被授权而无权访问网页或目录。 错误代码:401.4 401.4错误是由于筛选器导致授权失败。如果Web 服务器安装了筛选器程序以检查连接到服务器的用户。该筛选器程序能够禁止通过连接到服务器的身份验证来访问资源。 错误代码:401.5 401.5错误是由于 ISAPI/CGI 应用程序导致授权失败。如果所要访问的 Web 服务器地址上安装了 ISAPI 或 CGI 程序用于在继续执行之前检验用户证书。该程序能够禁止通过连接到服务器的身份验证证书来访问资源。 错误代码:403.1 403.1错误是由于"执行"访问被禁止而造成的,若试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会出现此种错误。 错误代码:403.2 403.2错误是由于"读取"访问被禁止而造成的。导致此错误是由于没有可用的默认网页并且没有对目录启用目录浏览,或者要显示的 HTML 网页所驻留的目录仅标记为"可执行"或"脚本"权限。 错误代码:403.3 403.3错误是由于"写入"访问被禁止而造成的,当试图将文件上载到目录或在目录中修改文件,但该目录不允许"写"访问时就会出现此种错误。 错误代码:403.4 403.4错误是由于要求SSL而造成的,您必须在要查看的网页的地址中使用"https"。 错误代码:403.5 403.5错误是由于要求使用 128 位加密算法的 Web 浏览器而造成的,如果您的浏览器不支持128位加密算法就会出现这个错误,您可以连接微软网站进行浏览器升级。 错误代码:403.6 403.6错误是由于IP 地址被拒绝而造成的。如果服务器中有不能访问该站点的 IP 地址列表,并且您使用的 IP 地址在该列表中时您就会返回这条错误信息。 错误代码:403.7 403.7错误是因为要求客户证书,当需要访问的资源要求浏览器拥有服务器能够识别的安全套接字层 (SSL) 客户证书时会返回此种错误。 错误代码:403.8 403.8错误是由于禁止站点访问而造成的,若服务器中有不能访问该站点的 DNS 名称列表,而您使用的 DNS 名称在列表中时就会返回此种信息。请注意区别403.6与403.8错误。 错误代码:403.9 403.9错误是由于连接的用户过多而造成的,由于Web 服务器很忙,因通讯量过多而无法处理请求时便会返回这条错误。 错误代码:403.10 403.10错误是由于无效配置而导致的错误,当您试图从目录中执行 CGI、ISAPI 或其他可执行程序,但该目录不允许执行程序时便会返回这条错误。 错误代码:403.11 403.11错误是由于密码更改而导致无权查看页面。 错误代码:403.12 403.12错误是由于映射器拒绝访问而造成的。若要查看的网页要求使用有效的客户证书,而您的客户证书映射没有权限访问该 Web 站点时就会返回映射器拒绝访问的错误。 错误代码:403.13 403.13错误是由于需要查看的网页要求使用有效的客户证书而使用的客户证书已经被吊销,或者无法确定证书是否已吊销造成的。 错误代码:403.15 403.15错误是由于客户访问许可过多而造成的,当服务器超出其客户访问许可限制时会返回此条错误。 错误代码:403.16 403.16错误是由于客户证书不可信或者无效而造成的。 错误代码:403.17 403.17错误是由于客户证书已经到期或者尚未生效而造成的。 错误代码:404.1 404.1错误表明所访问 Web 站点的 IP 地址不接受对端口(请求的来源端口)的请求。一般来说,404.1 错误只会出现在具有多个 IP 地址的计算机上。如果在特定 IP 地址/端口组合上收到客户请求,而且在特定的端口上 IP 地址并没有设置为侦听,则 IIS 将返回 404.1 HTTP 错误。例如,如果一台计算机有两个 IP 地址,而只将其中一个 IP 地址配置为在端口 80 上侦听,则其它 IP 地址从端口 80 收到的任何请求都将导致 IIS 返回 404.1 错误。只应在服务级设置这一错误,因为只有当服务器上使用多个 IP 地址时它才返回给客户。 错误代码:404b 404b错误是由于无法找到文件而造成的,通常是由于正在搜索的网页可能已经删除、更名或暂时不可用。 错误代码:405 405错误是由于资源被禁止而导致的网页地址不正确,因此要寻找的网页无法显示。 错误代码:406 406错误是由于浏览器无法打开正在寻找的资源而导致的错误。 错误代码:407 407错误是由于代理服务器必须先验证身份,然后才处理请求。 错误代码:410 410错误要寻找的网页已被永久删除而导致的,这意味着资源永远无法使用。 错误代码:412 412错误是由于要查看的网页设置有先决条件,因此该请求无法完成。一般是网页中有一个或多个请求标题字段中具有先决条件,这些字段经服务器测试后被认为是"FALSE"。客户端为当前资源的 meta 信息(头文件字段数据)设置了先决条件,以便防止请求的方法被用于指定资源外的其他资源。 错误代码:414 414错误是由于请求的 URI 太长,服务器拒绝处理请求而造成的。一般的可能性有: 1)客户端错误地将 POST 请求转换为带有长查询信息的 GET 请求。 2)或者是客户端遇到重定向问题(例如,重定向 URL 的前缀指向自身的后缀)。 3)服务器遭到客户端的攻击,该客户端试图利用那些使用定长缓冲来读取或控制请求 URI 的服务器上的安全漏洞。 错误代码:500 500错误是由于内部服务器错误造成的。 错误代码:500.11 500.11错误是由于服务器关闭而造成的资源无法访问,Web 站点关闭期间无法处理请求。 错误代码:500.12 500.12错误是由于应用程序重新启动而造成的资源暂时无法访问,Web站点重新启动期间无法处理请求。 错误代码:500.13 500.13错误是由于服务器太忙而造成的,此时无法处理请求。通讯量超出 Web 站点的能力。 错误代码:500.14 500.14错误是由于应用程序无效而造成的,部分 Web 站点不可用。Web 站点应用程序配置存在问题,无法处理请求。 错误代码:500.15 500.15错误是由于请求了不不允许请求的 global.asa而造成的,你可以编辑"地址"栏中的网址,删除 global.asa,然后按 Enter。来解决这个问题。 错误代码:502 502错误是由于网关错误而造成的,当作为网关或代理的服务器与上层内容服务器联络时,收到无效的响应时就会出现502错误。 错误代码:500-100.asp 500-100.asp错误是指ASP错误,默认情况下,"默认 Web 站点"及其所有应用程序都将 ASP 错误进程传送到 500-100.asp 文件;但是,用户创建的任何新 Web 站点或其应用程序都将 500.100 错误进程传送到默认的(不是自定义的)错误文件。如果要为 .asp 文件开发附加的错误进程,可以将 500-100 错误映射到 .asp 文件,或者创建自己的错误进程 .asp 文件。 500-100.asp 文件处理 .asp 文件编译和运行期间发生的任何错误。当发生 ASP 错误时,IIS 返回 500-100.asp 文件并附带详细的错误信息,如发生错误的行号和对错误的描述。 如果文件 500-100.asp 本身包含 ASP 错误,ASP 就不会返回另一个 500-100.asp 文件;这样,报告错误时就好象根本没有与 500-100 错误对应的自定义错误文件似的。 如果错误处理文件(默认是 500-100.asp)包含运行时错误,则只显示此错误,而不考虑请求的 .asp 文件中的错误类型。如果错误处理文件有预处理和编辑错误,则在浏览器中显示这两种错误(即,显示 500-100.asp 文件中的错误和请求的 .asp 文件中的错误)。 4.3. 枚举声明 java.lang.Thread.State 线程有以下几种状态:NEW(已创建但尚未开始执行)、RUNNABLE(正在Java虚拟机中执行)、BLOCKED(阻塞中:正等待获得监控锁)、WAITING(等待:无条件等候其他线程执行完毕,直到接收到唤醒通知)、TIMED_WAITING(限时等待:等候其他线程执行完毕,直到接收到唤醒通知或等待时间超过了时限)、TERMINATED(终止:线程已经退出)。4.4. 异常 java.lang.ArithmeticException 算术条件异常。譬如:整数除零等。 java.lang. 数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。 java.lang.ArrayStoreException 数组存储异常。当向数组中存放非数组声明类型对象时抛出。 java.lang.ClassCastException 类造型异常。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。 java.lang.ClassNotFoundException 找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。 java.lang.CloneNotSupportedException 不支持克隆异常。当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。 java.lang. 枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时,抛出该异常。 java.lang.Exception 根异常。用以描述应用程序希望捕获的情况。 java.lang.IllegalAccessException 违法的访问异常。当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。 java.lang.IllegalMonitorStateException 违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。 java.lang.IllegalStateException 违法的状态异常。当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常。 java.lang.IllegalThreadStateException 违法的线程状态异常。当县城尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常。 java.lang.IndexOutOfBoundsException 索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。 java.lang.InstantiationException 实例化异常。当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。 java.lang.InterruptedException 被中止异常。当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。 java.lang.NegativeArraySizeException 数组大小为负值异常。当使用负数大小值创建数组时抛出该异常。 java.lang.NoSuchFieldException 属性不存在异常。当访问某个类的不存在的属性时抛出该异常。 java.lang.NoSuchMethodException 方法不存在异常。当访问某个类的不存在的方法时抛出该异常。 java.lang.NullPointerException 空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。 java.lang.NumberFormatException 数字格式异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。 java.lang.RuntimeException 运行时异常。是所有Java虚拟机正常操作期间可以被抛出的异常的父类。 java.lang.SecurityException 安全异常。由安全管理器抛出,用于指示违反安全情况的异常。 java.lang. 字符串索引越界异常。当使用索引值访问某个字符串中的字符,而该索引值小于0或大于等于序列大小时,抛出该异常。 java.lang.TypeNotPresentException 类型不存在异常。当应用试图以某个类型名称的字符串表达方式访问该类型,但是根据给定的名称又找不到该类型是抛出该异常。该异常与ClassNotFoundException的区别在于该异常是unchecked(不被检查)异常,而ClassNotFoundException是checked(被检查)异常。 java.lang.UnsupportedOperationException 不支持的方法异常。指明请求的方法不被支持情况的异常。
‘叁’ java编译异常有哪几个
Exception下除了RuntimeException及其子类以外的所有子类,JDK文档上说,已知道的直接子类有:
‘肆’ java编译中出现了Exception in thread “main" java.lang.UnsupportedClassVersionError
这个问题确实是由较高版本的JDK编译的java class文件试图在较低版本的JVM上运行产生的错误。
1、解决措施就是保证jvm(java命令)和jdk(javac命令)版本一致。如果是linux版本,则在命令行中分别输入java -version和javac -version命令来查看版本是否一致。这里假设都是1.7版本。
2、如果都一致,但还是解决不了问题,那么你肯定不是直接在命令行中用javac来编译的,而是用类似于eclipse、netbeans这样的编译器来编译的。因为很多编译器都自带javac,而不是采用操作系统中的编译器。如果你的编译器是eclipse的话,那么需要在项目的属性里设置jdk版本,方法是右击项目-->properties-->java compiler --> Enable project specific settings -->将compiler compliance level设置为1.7,也就是与jvm一致的版本(在命令行中java -version所显示的版本)。
综上,如果你是用编译器来编译的话,请首先确保编译器自带的jdk版本是否和操作系统中的java版本一致。
见下图:
‘伍’ java程序编译的时候这个出现异常怎么处理
Java源码文件这些文件可以是任意字符编码的,在Java的Class文件里存储的字符串是UTF-8编码的,所以如果在代码中有中文字符的话,就会导致乱码。当然,这只是众多原因中的一种,所以把编码设置统一是避免出现乱码的解决办法。
工具:
eclipse
方法如下:
点击window--Preferences
选择General--WorkSpace,选择Default(GBK)即可
附:也可以选择Other,从Other中选择程序需要的编码格式。
‘陆’ java文件编译的时候 报出异常,求解释。
一个java文件中可以共存多个class类,但只能有一个 public class 类名 ,而这个类名必须和这个Java文件的文件名称一样。你上述的就是因为Java文件和其中的public class 类名不匹配导致的
‘柒’ java语言中什么叫做编译错误
就是你用javac命令将源代码(.java)文件翻译成字节码(.class)文件时产生的错误。
比如,变量名不符合规定,变量没定义,关键字拼写错误等等。。。
java的编译器(javac)会根据java语法规定做一些检查,不符合规定的就不通过编译。
编译错误,是相对于运行时错误而言的。
运行时错误,是你用java命令运行时会出现的错误,一般会抛出异常。
‘捌’ Java之运行时异常与编译时异常区别
Java中用2种方法处理异常:
1.在发生异常的地方直接处理;
2.将异常抛给调用者,让调用者处理。
Java常见的异常:
(1)编译时异常:Java.lang.Exception
(2)运行期异常:Java.lang.RuntimeException
Java.lang.Exception和Java.lang.Error继承自Java.lang.Throwable;
Java.lang.RuntimeException继承自Java.lang.Exception.
编译时异常: 程序正确,但因为外在的环境条件不满足引发。例如:用户错误及I/O问题----程序试图打开一个并不存在的远程Socket端口。这不是程序本身的逻辑错误,而很可能是远程机器名字错误(用户拼写错误)。对商用软件系统,程序开发者必须考虑并处理这个问题。Java编译器强制要求处理这类异常,如果不捕获这类异常,程序将不能被编译。
运行期异常: 这意味着程序存在bug,如数组越界,0被除,入参不满足规范.....这类异常需要更改程序来避免,Java编译器强制要求处理这类异常。
‘玖’ 为什么java编译时异常需要try-catch处理,改掉不好吗
异常有很多种类,爆红属于一种
代码有一个规范,自己写的代码
过两天去看,有时候就看不明白了
项目上线也是一样,没有人敢保证
自己的代码没有bug,所以报错机制
提供了一个查阅的平台,方便知道
哪里出错了,如何去修改
代码写出来只是第一步,后期维护
工作也是必要的