本来想着Java的异常处理没必要仔细看,大致看看就行,但是现在看来这是不行的,里面有很多要注意的知识点。
Java中的异常处理是通过try、catch、finally、throw、throws这五个关键字形成的,实际用起来不复杂,我觉得只要用几个典型的例子就可以知道异常处理怎么使用了。
典例一:使用try、catch、finally进行异常的捕获和处理
package ExceptionDemo; public class Demo3 { public static void main(String[] args) { int [] s = {1,2,3,4,5}; for (int j = 0; j < s.length; j++) { try{ System.out.println(s[j]+"除以"+j+"的值为"+s[j]/j); }catch (ArrayIndexOutOfBoundsException e){ System.out.println("数组越界异常!"); e.printStackTrace(); }catch (ArithmeticException e){ System.out.println("处0异常!"); e.printStackTrace(); }catch (Exception e){ System.out.println(e.getMessage()); }finally { System.out.println("此时j的值为"+j); } } System.out.println("程序执行结束了!"); } }
注意点:
1、catch捕获的异常时顺序执行的,执行catch后面的catch语句不执行
2、finally是可以省略的,若省略finally语句块,则在catch语句结束后,执行try后的语句执行。
3、当catch中含有system.exit(0)时,则不执行finally中的语句,程序终止;若catch中含有return语句,则先执行finally的语句然后再执行catch中语句。
抛出异常的方式有两种:一种是系统自动抛出的异常,一种是指定的方法抛出的异常。
典例二;使用throw抛出异常,并在相应的方法内处理
package ExceptionDemo; public class Demo4 { public static void main(String[] args) { int a= 5; int b = 0; try{ if (b == 0){ System.out.println(a+"除以"+b+"的值为"+a/b); }else { throw new ArithmeticException(); } }catch (ArithmeticException e){ System.out.println("除数不能为0!"); } } }
结果是:
上面是我们能处理的异常,但是对于程序中无法处理的异常,必须交由系统来处理异常,在main方法中利用throws抛出异常,让系统处理。用户也可以自定义异常类,但是自定义异常类不能由系统自动抛出,需要借助throw关键字来抛出这个异常类的对象。用户自定义的异常可以继承Exception类。具体的自定义异常类的方法如下:
package ExceptionDemo; public class CheckException extends Exception { private int errorCode; private String errorMessage; public CheckException(){ } public CheckException(String errorMessage,int errorCode) { super(errorMessage); this.errorCode = errorCode; } public void setErrorCode(int errorCode) { this.errorCode = errorCode; } public String getErrorMessage() { return errorMessage; } public void setErrorMessage(String errorMessage) { this.errorMessage = errorMessage; } }
总结:
1、当发生异常时,处理方式有两种:一种是交由Java的默认异常处理机制来处理,二是自行编写try-catch、
-finally语句处理
2、程序对异常处理的方式有三种:一是程序不能不能处理的错误;二是程序捕获的运行时异常,这类异常自己应该避免;三是必须捕获的非运行时异常。
对于异常,我觉得学到这就行了。在实际得开发中怎么用我也不知道,等到那时具体开发得时候,遇到不会得异常知识在进行补起来吧!
最后有兴趣得可以一起交流啊!