try、 catch、 finally、 throw、 throws
try {}:监控区域,需要监控异常的代码放在 try{} 里面
catch {}:捕获异常
finally {}:最后执行,也可以不要 finally {} 块,处理善后工作(假设开了IO,为节约资源,关闭IO)。
假设捕获(catch{})多个异常,需要从小到(从子类异常到父类异常)一个一个捕获
自动捕获异常快捷键 : 选中要监控异常的语句 Ctrl + Alt + T :try/catch/finally ...
示例:
public class Test { public static void main(String[] args) { int a = 1; int b = 0; //假设要捕获多个异常,从小到大(子类到父类),catch catch catch try { //try 监控区域 System.out.println(a/b); }catch(Error c) { //catch 捕获异常 System.out.println("Error"); }catch(Exception d) { System.out.println("Exception"); d.printStackTrace(); }catch(Throwable e) { System.out.println("Throwable"); }finally { //finally 最后执行,处理善后工作 System.out.println("finally"); } } }
throw:主动抛出异常,throw 一般在方法中使用
throws:方法上抛出异常,假设这个方法中,处理不了这个异常,可以上升到方法上抛出,再由调用方法时的 try catch捕获处理异常。
public class Test2 { public static void main(String[] args) { try { new Test2().test(1,0); } catch (Exception e) { System.out.println("ssss"); } finally { System.out.println("finally"); } } //假设这个方法中,处理不了这个异常。方法上抛出异常:throws ArithmeticException public void test(int a,int b) throws ArithmeticException{ if (b==0) { throw new ArithmeticException(); //主动抛出异常,throw 一般在方法中使用 }else{ System.out.println(a/b); } } }