Java常见错误及异常分析
2011-09-07 14:38
218 查看
Java语言中所有的错误及异常都继承自Throwable类。只有当对象是此类或其子类的实例时,才能通过JVM或者Java throw语句抛出。有点意思的是其他以able结尾的都是接口,而Throwable确是类(sigh,还好今天仔细研究了下,不然都不知道)......
Throwable有两个子类:Error和Exception
(1).Error:
表示由JVM侦测到的无法预期的错误,这是属于JVM层次的严重错误,导致JVM无法运行,因此这是无法采取任何恢复的操作,顶多只能显示错误信息。
(2).Exception:
异常,属于可恢复可捕捉的例外
Java主要提供的两种异常:Runtime Exception和Checked Exception
(1).Checked Exception:
也就是我们经常遇到的IO异常,以及SQL的异常都是这种异常。对于这种异常,Java编译器要求我们必须强制进行catch。
(2).Runtime Exception:
即运行时异常,是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
如果我们不想终止,则必须捕获所有的运行时异常,决不让这个线程退出。在出现异常数据时,正确的做法应该是将异常舍弃,同时记录日志,而不应该由于异常数据影响对下面正确数据的处理。
常见Exception及Error
(1)Exception
java.lang包下有:
1.java.lang.ArithmeticException:
当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。
2.java.lang.ArrayIndexOutOfBoundsException
用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
3.java.lang.ArrayStoreException
试图将错误类型的对象存储到一个对象数组时抛出的异常。例如,以下代码可生成一个
当试图将对象强制转换为不是实例的子类时,抛出该异常。例如,以下代码将生成一个
当应用程序试图使用以下方法通过字符串名加载类时,抛出该异常:
但是没有找到具有指定名称的类的定义。
Throwable有两个子类:Error和Exception
(1).Error:
表示由JVM侦测到的无法预期的错误,这是属于JVM层次的严重错误,导致JVM无法运行,因此这是无法采取任何恢复的操作,顶多只能显示错误信息。
(2).Exception:
异常,属于可恢复可捕捉的例外
Java主要提供的两种异常:Runtime Exception和Checked Exception
(1).Checked Exception:
也就是我们经常遇到的IO异常,以及SQL的异常都是这种异常。对于这种异常,Java编译器要求我们必须强制进行catch。
(2).Runtime Exception:
即运行时异常,是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
RuntimeException的任何子类都无需在
throws子句中进行声明,及我们可以不对运行时异常做处理。当出现这种异常时由JVM托管,将异常一直往上层抛,直到遇到处理代码。如果没有处理快,到最上层,如果是多线程则由Thread.run()抛出,该线程结束。如果是单线程则被main()抛出,程序结束。即当我们不对运行时异常做处理时,当出现运行时异常时,要么是线程终止,要么是程序终止。
如果我们不想终止,则必须捕获所有的运行时异常,决不让这个线程退出。在出现异常数据时,正确的做法应该是将异常舍弃,同时记录日志,而不应该由于异常数据影响对下面正确数据的处理。
常见Exception及Error
(1)Exception
java.lang包下有:
1.java.lang.ArithmeticException:
当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。
2.java.lang.ArrayIndexOutOfBoundsException
用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。
3.java.lang.ArrayStoreException
试图将错误类型的对象存储到一个对象数组时抛出的异常。例如,以下代码可生成一个
ArrayStoreException:
Object x[] = new String[3]; x[0] = new Integer(0);4.java.lang.ClassCastException
当试图将对象强制转换为不是实例的子类时,抛出该异常。例如,以下代码将生成一个
ClassCastException:
Object x = new Integer(0); System.out.println((String)x);5.java.lang.ClassNotFoundException
当应用程序试图使用以下方法通过字符串名加载类时,抛出该异常:
Class类中的
forName方法。
ClassLoader类中的
findSystemClass方法。
ClassLoader类中的
loadClass方法。
但是没有找到具有指定名称的类的定义。
相关文章推荐
- Java 常见的异常错误分析大集合
- Java常见内存溢出异常分析(OutOfMemoryError)
- java 常见的异常错误代码
- Java编程中常见的异常与错误?
- Java常见错误与问题分析-2进制
- java学习-【转】Java常见内存溢出异常分析
- Java 常见异常类型及原因分析(上)
- java的常见异常与错误总结
- Java常见内存溢出异常分析(OutOfMemoryError)
- java的常见异常与错误总结
- Java常见错误与问题分析-2进制
- Java中常见的50个错误、异常及规避技巧
- Java常见内存溢出异常分析(OutOfMemoryError)
- Java建造者模式以及常见误区错误分析纠正
- Eclipse-Java常见异常/错误解决
- Java常见内存溢出异常分析与解决
- 从校园到工作的路(三)——那些java中的常见异常与错误
- JVM:Java常见内存溢出异常分析
- java struts常见错误以及原因分析
- 【Java几个常见错误分析】