Java程序出现异常时,为了避免程序中断,可以使用try...catch语句捕获异常
package com.jike.exception; class Exc{ int a=10; int b=10; } public class test01 { public static void main(String[] args) { int tem=0; Exc exc=null; exc=new Exc(); try { tem=exc.a/exc.b; System.out.println(tem); }catch (NullPointerException e) { System.out.println("空指针异常:"+e); }catch (ArithmeticException e) { System.out.println("算数异常:"+e); }finally { System.out.println("程序退出"); } } }
在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法不处理异常,将异常传递给方法的调用者处理:
package com.jike.exception; public class test02 { public static void main(String[] args){ // TODO Auto-generated method stub try { tell(10,0); } catch (Exception e) { System.out.println("算术异常:"+e); } } public static void tell(int a,int b)throws ArithmeticException { int tem=0; tem=a/b; System.out.println(tem); } }
输出:
算术异常:java.lang.ArithmeticException: / by zero
throw关键字抛出一个异常,抛出的时候直接抛出异常类的实例化对象即可。
package com.jike.exception; public class test03 { public static void main(String[] args) { try { throw new Exception("实例化异常对象"); } catch (Exception e) { System.out.println(e); } } }
输出:
java.lang.Exception: 实例化异常对象
自定义异常:
package com.jike.exception; class MyException extends Exception{ public MyException(String msg) { super(msg); } } public class test04 { public static void main(String[] args) { // TODO Auto-generated method stub try { throw new MyException("自定义异常"); } catch (MyException e) { System.out.println(e); } } }
输出:
com.jike.exception.MyException: 自定义异常