1)在Java中,违例对象必然是从Throwable中衍生出来的一个类的实例。
2) Throwable包含两个直接子类Error(错误)和Exception(违例)
Error类和Exception类
Error表示那些由于异常情况引起的严重错误,我们不应去捕获这类对象,它主要包括系统内部错误以及资源耗尽等情况。而Exception类表示那些你必须去捕捉并处理的情况。
检查违例(Checked Exceptions)和不检查违例(Unchecked Exceptions)
在Exception的子类中有一个非常重要的类:RuntimeException(2)。Java中将自它或者它的子类衍生出来的任何违例都称作“不检查违例”(Unchecked Exceptions),自其他Exception子类衍生出来的违例都称作“检查违例”(Checked Exceptions)(3)。
不检查违例包括的问题主要有:造型错误,数组越界存取,空指针访问等,这些问题一般来说都是你程序编写的问题。简单地说,不检查违例就是那些运行中检查而无需你程序中控制的违例。而检查违例是指那些你必须处理的违例,否则编译时会产生一个编译错误。除了由Error类和RuntimeException类衍生出来的违例外,你必须在程序中控制(handle)或者声明(declare)所有可能被掷出的违例,也就是所有的检查违例都必须得到处理,否则编译器就会对你亮起红灯,拒绝编译。你可以选择下面任意一种方法来处理它:
1)捕获违例:在try代码块后面紧跟catch处理代码块
2)声明违例:在方法签名中用throws来通告可能会产生违例
违例控制的流程
在Java中,这些工作由以下关键字来完成:try,catch,throw,throws,finally,他们的基本代码结构如下:
try
{
//代码块
}
catch(ExceptionType e)
{
//此违例类型的控制代码
}finally
{
//清除回收等工作
}