本文由哈哈流浪小三毛贡献
2010-3-30 17:25
最佳答案
算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
方法未找到异常:NoSuchMethodException java.lang.AbstractMethodError 抽象方法错误。当应用试图调用抽象方法时抛出。 java.lang.AssertionError 断言错。用来指示一个断言失败的情况。 java.lang.ClassCircularityError 类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。
java.lang.ClassFormatError 类格式错误。当 Java 虚拟机试图从一个文件中读取 Java 类,而检测到该文件 的内容不符合类的有效格式时抛出。 java.lang.Error 错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一 些不应被应用程序捕获的反常情况。 java.lang.ExceptionInInitializerError 初始化程序错误。 当执行一个类的静态初始化程序的过程中, 发生了异常时抛出。 静态初始化程序是指直接包含于类中的 static 语句段。 java.lang.IllegalAccessError 违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方 法,但是又违反域或方法的可见性声明,则抛出该异常。 java.lang.IncompatibleClassChangeError 不兼容的类变化错误。 当正在执行的方法所依赖的类定义发生了不兼容的改变时, 抛出该异常。 一般在修改了应用中的某些类的声明定义而没有对整个应用重新编 译而直接运行的情况下,容易引发该错误。 java.lang.InstantiationError 实例化错误。 当一个应用试图通过 Java 的 new 操作符构造一个抽象类或者接口 时抛出该异常. java.lang.InternalError 内部错误。用于指示 Java 虚拟机发生了内部错误。 java.lang.LinkageError 链接错误。 该错误及其所有子类指示某个类依赖于另外一些类, 在该类编译之后, 被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。 java.lang.NoClassDefFoundError
未找到类定义错误。当 Java 虚拟机或者类装载器试图实例化某个类,而找不到 该类的定义时抛出该错误。 java.lang.NoSuchFieldError 域不存在错误。当应用试图访问或者修改某类的某个域,而该类的定义中没有该 域的定义时抛出该错误。 java.lang.NoSuchMethodError 方法不存在错误。当应用试图调用某类的某个方法,而该类的定义中没有该方法 的定义时抛出该错误。 java.lang.OutOfMemoryError 内存不足错误。 当可用内存不足以让 Java 虚拟机分配给一个对象时抛出该错误。 java.lang.StackOverflowError 堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。 java.lang.ThreadDeath 线程结束。当调用 Thread 类的 stop 方法时抛出该错误,用于指示线程结束。 java.lang.UnknownError 未知错误。用于指示 Java 虚拟机发生了未知严重错误的情况。 java.lang.UnsatisfiedLinkError 未满足的链接错误。当 Java 虚拟机未找到某个类的声明为 native 方法的本机语 言定义时抛出。 java.lang.UnsupportedClassVersionError 不支持的类版本错误。当 Java 虚拟机试图从读取某个类文件,但是发现该文件 的主、次版本号不被当前 Java 虚拟机支持的时候,抛出该错误。 java.lang.VerifyError
验证错误。 当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该 错误。 java.lang.VirtualMachineError 虚拟机错误。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。
java.lang.ArithmeticException 算术条件异常。譬如:整数除零等。 java.lang.ArrayIndexOutOfBoundsException 数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。 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.EnumConstantNotPresentException 枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象,但该 枚举对象并不包含常量时,抛出该异常。 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.StringIndexOutOfBoundsException 字符串索引越界异常。当使用索引值访问某个字符串中的字符,而该索引值小于 0 或大于等于序列大小时,抛出该异常。 java.lang.TypeNotPresentException 类型不存在异常。当应用试图以某个类型名称的字符串表达方式访问该类型,但 是根据给定的名称又找不到该类型是抛出该异常。该异常与 ClassNotFoundException 的区别在于该异常是 unchecked(不被检查)异常, 而 ClassNotFoundException 是 checked(被检查)异常。 java.lang.UnsupportedOperationException
不支持的方法异常。指明请求的方法不被支持情况的异常。 异常 javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login (/Login 是你的 action 名字) 可能原因 action 没有再 struts-config.xml 中定义,或没有找到匹配的 action,例如在 JSP 文件中使用 <html:form action="Login.do".将表单提交给 Login.do 处理, 如果出 现上述异常,请查看 struts-config.xml 中的定义部分,有时可能是打错了字符或 者是某些不符合规则,可以使用 strutsconsole 工具来检查。 ---------------------------------------------------------------------------------------------------------------异常 org.apache.jasper.JasperException: Cannot retrieve definition for form bean null 可能原因 这个异常是因为 Struts 根据 struts-config.xml 中的 mapping 没有找到 action 期 望的 form bean。大部分的情况可能是因为在 form-bean 中设置的 name 属性和 action 中设置的 name 属性不匹配所致。换句话说,action 和 form 都应该各自 有一个 name 属性,并且要精确匹配,包括大小写。这个错误当没有 name 属性 和 action 关联时也会发生,如果没有在 action 中指定 name 属性,那么就没有 name 属性和 action 相关联。 当然当 action 制作某些控制时, 譬如根据参数值跳 转到相应的 jsp 页面, 而不是处理表单数据, 这是就不用 name 属性, 这也是 action 的使用方法之一。 ---------------------------------------------------------------------------------------------------------------异常 No action instance for path /xxxx could be created 可能原因 特别提示:因为有很多中情况会导致这个错误的发生,所以推荐大家调高你的 web 服务器的日志/调试级别,这样可以从更多的信息中看到潜在的、在试图创 建 action 类时发生的错误,这个 action 类你已经在 struts-config.xml 中设置了 关联(即添加了<action>标签)。 在 struts-config.xml 中通过 action 标签的 class 属性指定的 action 类不能被找到 有很多种原因,例如:定位编译后的.class 文件失败。Failure to place compiled .class file for the action in the classpath (在 web 开发中,class 的的 位置在 r WEB-INF/classes,所以你的 action class 必须要在这个目录下。例如
你的 action 类位于 WEB-INF/classes/action/Login.class,那么在 struts-config.xml 中设置 action 的属性 type 时就是 action.Login). 拼写错误,这个也时有发生,并且不易找到,特别注意第一个字母的大小写和包 的名称。 ---------------------------------------------------------------------------------------------------------------异常 javax.servlet.jsp.JspException: No getter method for property username of bean org.apache.struts.taglib.html.BEAN 可能原因 没有位 form bean 中的某个变量定义 getter 方法
本章学习目标 理解致命性错误 Error 和异常 Exception 的基本概念及可能发生错误或异常的情况。 了解异常的类体系结构,检查和非检查型异常。 了解异常类 Throwable 及其子类所处理的异常种类。 深入理解抛出异常和捕捉异常的概念。 掌握在程序中使用 try-catch-finally 语句结构处理异常的方法。 掌握自定义异常的方法和主动抛出异常的方法。 ・本章学习内容 异常的概念及产生的原因 处理异常的 try、catch 和 finally 语句 描述异常分类 开发程序来处理自己的异常 4.1 错误与异常的概念 程序运行时难免出现一些非正常的现象,例如死循环、除数为 0、文件不存在、内存溢出等等。这些 非正常的现象分为错误 Error 和异常 Exception 两种。 1、错误 Error Error 指的是致命性的错误,诸如死循环、递归无法结束、内存溢出、硬件设备错误(例如软驱损坏、 打印机缺纸等)。这一类的错误只能在编程阶段解决,在程序运行时程序自身是无法自行处理的。
2、异常 Exception Exception 又可译为例外,指那些可以在编程时预测并可在程序运行时处理的错误。例如当两个变量 做除法运算时,可以预测作为除数的变量也可能其值为 0,这样在程序中就可以事先安排一段程序对这种 异常的情况进行处理。 虽然异常是非致命性的错误,但是如果程序不加以处理,就默认由 Java 虚拟机处理,Java 虚拟机在 输出一个异常信息后也会造成程序的非正常结束。所以编程时必须对可预料的异常进行处理。
3、异常对程序的影响 有些异常可以通过编译,其异常只在程序运行到造成异常的语句时发生,例如“除数为 0”的异常就 是这样。 也有的异常如果不加以处理就无法通过编译,例如在线程的 run 方法中就必须对 InterruptedException 异常进行编程处理,否则无法通过编译。 4.2 异常类的层次 异常类的层次结构如图所示 : 4.3 异常类4.3.1 Throwable 类 在 Java 中,一切异常都是用异常类 Throwable 的直接或间接派生的某个异常类的实例来处理的。 Throwable 类有两个子类,为 Error 和 Exception。 Exception 类的子类分为两种,即属于 RuntimeException 类的子类和不属于 RuntimeException 类的子类, 其中 RuntimeException 类子类的异常基本上都是由于编程时不严谨的逻辑错误造成的, 例如 要求用户输入数字时没有充分考虑到用户有可能输入非数字的字符、汉字等。编程时要充分估计到此类错 误发生的可能性,并在程序中加以处理。 Error 类的子类都有后缀 Error,这些类处理的都是系统内部错误,这类错误是不可修复和处理的,只 能被动地通知用户发生了何种错误。 下表列出了 Throwable 类的常用方法,由于所有的异常类都是从 Throwable 类继承而来的,所以所 有的异常类,不论是 Java 提供的异常类还是自定义的异常类,都支持这些方法。
常用方法
解
释
public String getMessage()
返回一个与异常有关的字符串信息
public void printStackTrace()
打印显示异常抛出时的堆栈跟踪状态,并输出到标准错误流中
public String toString()
返回一个简短描述异常对象的字符串信息
4.3.2 常用的异常类 要进行异常处理编程,就要了解常用的异常类,表 8-2 给出了 Exception 类的常用构造方法,下表给 出了 Exception 类中的常用子类。