12、异常的好处: (1)将问题进行封装。 (2)将正常流程代码和问题处理代码相分离,方便于阅读。 注意:(1)catch是用于处理异常。如果没有catch就代表异常没有被处理过,如果该异常是检测时异常。那么必须声明(抛出)。 (2) ①finally中定义的通常是关闭资源代码。因为资源必须释放。 ②finally只有一种情况不会执行。当执行到System.exit(0);fianlly不会执行。 如: try{ … … //正常执行到System.exit(0); System.exit(0); }catch(){ }finally{} (3) 异常在子父类覆盖中的体现: ①子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类。 ②如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。 ③如果父类或者接口的方法中没有异常抛出,那么子类在覆盖方法时,也不可以抛出异常。 如果子类方法发生了异常。就必须要进行try处理。绝对不能抛。如果抛了就会出错 即:子类不能抛出比父类更多的异常 异常测试题:
5、 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
在try块中可以抛出异常吗?
答:1、throws是方法抛出异常。如果一个方法可能会出现异常,
但是没有能力来处理这种异常,可以在方法的声明处用throws子句来声明抛出异常,可以抛出多个异常类,用逗号隔开。可单独使用。
如:public void show() throws Exception{}
2、throw是语句抛出异常,是抛出异常对象,throw语句抛出的对象必须是java.lang.Throwable类或其子类的实例。
throw要么和try...(catch)...finally一起使用,要么和throws一起使用,不可单独使用。
如:
public static void print2() throws Exception{
int i=1;
int j=0;
try{
int a=i/j;
System.out.println(a);
throw new Exception();
}
finally{
System.out.println("finally......");
}
}
调用print()输出为:
finally......
Exception in thread "main" java.lang.ArithmeticException: / by zero
......
3、try:它里面放置可能引发异常的代码。
4、catch:后面对应异常类型和一个代码块,用于表明该catch块用于处理这种异常类型的代码块,可以有多个catch块。
5、finally:主要用于回收在try块里打开的物理资源(如数据库连接),
异常机制总是保证finally块总是被执行。
只有finally行完成之后,才会回来执行try或者catch块中的return或者throw语句,
如果finally中使用了return或者 throw等终止方法的语句,
则就不会跳回执行,直接停止。
如:
public String show(){
int i=1;
int j=1;
try{
//1、
int a=i/j;
System.out.println(a);
//3、
return "成功";
}catch(Exception e){
e.printStackTrace();
}finally{
//2、
System.out.println("finally......");
}
return "失败";
}
调用show(),最后输出结果为:1
finally......
成功
6. 在try块中是可以抛出异常的.如:
public static void print2() throws Exception{
int i=1;
int j=0;
try{
int a=i/j;
System.out.println(a);
throw new Exception();
}
finally{
System.out.println("finally......");
}
}
调用print()输出为:
finally......
Exception in thread "main" java.lang.ArithmeticException: / by zero
......
|