解:Java把在程序执行期间遇到的意外事件称为错误,并将错误分为两类。一类是非致命性的,通过某种修改后程序还能继续执行,这类错误称做异常。另外一类是致命性的,即程序遭到了非常严重的不正常状态,不能简单地恢复执行,这类错误称做错误或致命性错误。错误处理一般由系统承担。
当异常发生时异常处理能够提供相应的处理方法代码使程序继续执行。Java专门设计了相应的异常处理机制。
如何创建一个自定义异常?
解:自定义异常类型是从Exception类中派生的,所以要使用下面的生命语句来创建:
<自定义异常名>{…}
如何抛出自定义异常?
解:可使用以下3种方法抛出自定义异常。
(1) 使用try-catch-finally语句,在try子句中使用throw new抛出异常并捕获异常,在catch或finally子句中给出异常处理的代码,使程序继续执行。
(2) 使用throws语句在声明方法的同时声明抛出异常的类型,当异常发生时交由系统处理。
(3) 使用throw new语句直接抛出异常。
下面的程序有何错误?
public class Quiz1{
public static viod main(String args[]){myMathod();}
myMathod() {throw new MyException();}
}
class MyException{
public String toString() {return“自定义异常”;}
}
解:MyException不是一个异常类,所以在myMathod方法中不能使用throw new语句抛出。
下面的程序输出是什么?说出理由。(C)
public class Q1{
public static void main(String args[]){
try {throw new MyException();}
catch(Exception e){
System.out.println(“It’s caught!”);
}
finally{
System.out.println(“It’s finally caught!”);}
}
class MyException extends Exception{}
A.It’s finally caught! B.It’s caught!
C.It’s caught! D. 无输出
It’s finally caught!
解:因为try子句中捕获并抛出一个自定义异常MyException,则执行从该处中断而进入catch块,根据异常的类型进行匹配,只要该异常是catch中指定的异常的子类就匹配成功进而执行相应的catch中的内容,而finally块中的内容无论是否发生异常都将被执行。所以程序输出应该是选项C。