一、今日学习内容
1、在java中如何进行异常处理:java异常处理的方法一般有两种,分别是使用try…catch…finally…和throws来操作。
(1)Try…catch…finally…
通过使用Try…catch…finally….语句处理异常,它捕获被命名为属于异常类的异常,并调用方法处理它。其中,finally 无论有无异常都会执行。
Try...catch异常处理代码块的基本形式如下:
try //监视 { 可能发生异常的代码块; } catch (异常类型 异常对象名) / /捕获并处理异常 { 异常处理代码块; } finally{ / /最终执行 }
示例:使用Try…catch…finally…
public class TryCatchFinally{ public static void main (String[] args) { try{ int x=5; int y=x/0; System. out.println(y) ; }catch (Exception e) { e.printstackTrace() ; //将错误打印到堆栈 } finally{ System. out.println("Over!") ; } } }
整数是不可以除以0的,因为这句代码会出现异常,所以用try…catch…finally…捕获它
结果:
示例:
public class TryReturn { public static void main (String[] args) { TryReturn t=new TryReturn() ; int x =t.get(); System. out.printin("x="+x); } public int get() { int x=0; try{ x=5; return x; } catch (Exception e) ( e.printStackTrace() ; }finally{ x=10; return x; } } }
输出结果:x=10
如果将finally去掉,输出结果是x=5;从该结果可以看出,貌似finally没有执行一样,其实finally的语句是执行的,只不过方法是return 一个值, 只不过是从try 语句中返回的。其中finally可以省略。
catch语句可以有多个,并且如果用户要捕获Exception,则将Exception放在最后,不能放在前面,否则会出错,可以简单理解为,如果要捕获多个异常,异常的范围要按照从小到大顺序叠放。
示例:catch多个异常
public class TryCatchFinally { pub1ic static void main(String[] args) { try{ int x=5; int y= x/0; System. out.println(y) ; } catch (IllegalArgumentException e) { e. printStackTrace (); //将错误打印到堆栈 }catch (Exception e) { //Exception的范围比较大,应该放在后面 e. printstackTrace(); * } } }
总结:当抛出一个异常时,异常会由相应的catch语句捕获并处理。与一个try 相关的catch语句可以有多个,构成多重catch语句,异常类型决定了要执行哪个catch 语句。如果没有抛出异常,那么,try 代码块就会结束,并且会跳过它的所有catch语句,从最后一个catch后面的第一个语句继续执行。其实try语句也可以嵌入try语句,一个try代码块可以嵌入到另一个try代码块中。由于内部try代码块产生的异常如果没有被与该内部try代码块相关的catch捕获,就会传到外部try代码块。
public class TryCatchFinally { ( public static void main (String[] args) { try { try { int x= 5; int y=x/0; System. out.println(y) ; } catch (Exception e) { e.printStackTrace() ; } catch (IllegalArgumentException e) { e.printstackTrace() ;//将错误打印到堆栈 } catch (Exception e) {// Exception的范围比较大,应该放在后面 e.printStackTrace() ; } } }
(2)使用throws抛出异常
声明抛弃异常是在一个方法声明中的throws子句中指明的。throws子句方法的基本形式:
[修饰符] 返回类型 方法名( 参数1,参数2……) throws 异常列表 { }
示例:通过throws抛出异常
public class ThrowsDemo{ public static void main (String[] args) throws Exception { int x=5; int y=x/ 0; System. out.println(y) ; } }
throws子句中同时可以指明多个异常,说明该方法将不对这些异常进行处理,而是声明抛弃它们。
二、遇到的问题
对异常问题记得不清楚,多看多记
三、明日计划
继续学习第八章的内容