异常处理【总结】
1. 异常可以分为几类?
答:Java的异常类都是java.lang.Trowable的子类,它派生了两个字类,Error和Exception。前者由系统保留,后者供应用程序使用,
所以一般所说的异常,都是指Exception及其子类。
2. Java的异常处理机制可分为几个步骤?
答:1)抛出(throw)异常:若程序执行过程出现异常,会自动生成一个异常类对象,该对象被提交给Java运行时系统。
2)捕获(catch)异常:当系统收到异常对象,会寻找能处理这一异常的代码,并将异常对象交给其处理。
3)若系统找不到捕获异常的方法,则Java运行时系统将终止,相应的程序将退出。
3. 抛出异常和捕获异常的语法格式?finally语句是什么?
答:格式:
修饰符 返回类型 方法名(参数列表)throw 异常类名列表
try{
语句组;
}catch(异常类名 异常形式参数名){
异常处理语句组;
} catch(异常类名 异常形式参数名){
异常处理语句组;
} catch(异常类名 异常形式参数名){
异常处理语句组;
}finally{
异常处理语句组;
}
注意,finally语句为异常处理提供一个统一的出口,不论在try代码块中是否发生了异常,finally语句都会被执行。
4. 举例,数组越界的异常
答:
public class IndexOutOf {
public static void main(String[] args) {
String words[]= {"words","lisa","gnosed"};
try {
for(int i=0;i<5;i++) {
System.out.println(words[i]);
}
}catch(java.lang.ArrayIndexOutOfBoundsException e) {
System.out.println("index error");
}
finally {
System.out.println("\nit always come here");
}
}
}
5. 如何创建用户自定义异常类?
答:1)声明一个新的异常类,使之以Exception类 或其他某个已经存在的系统异常类 或用户异常类为父类。
2)为新的异常类定义属性和方法,或重载父类德属性和方法。
以下一个自定义异常类,测试登记号码非负性的异常。
class MyException extends Exception{
private String message;
private int id;
public MyException(String message,int id) {
this.message=message;
this.id=id;
}
public int getId() {
return this.id;
}
public String getMesag() {
return this.message;
}
}
public class Test {
void regist(int num) throws MyException{
if(num<0) {
System.out.println("登记号码"+num);
throw new MyException("号码为负值", 3);
}
}
void manage() {
try {
regist(-100);
}catch (MyException e) {
System.out.println("等级失败,出错种类"+e.getId()+
",原因是"+e.getMesag());
}finally {
System.out.println("本次登记操作结束");
}
}
public static void main(String[] args) {
Test2 t=new Test2();
t.manage();
}
}
测试结果:
登记号码-100
等级失败,出错种类3,原因是号码为负值
本次登记操作结束
还没有评论,来说两句吧...