捕获和抛出异常(Ctrl+Alt+T)
-
异常处理五个关键字
- try、catch、finally、throw、throws
-
package com.exception; public class Test { public static void main(String[] args) { //假如要捕获多个异常:从小到大! // int a=1; // int b=0; // System.out.println(a/b); // Exception in thread "main" java.lang.ArithmeticException: / by zero // at com.exception.Test.main(Test.java:8) // try {//监控区域 // // System.out.println(a/b); // }catch (ArithmeticException e){//catch(需要捕获的异常类型) 捕获异常 // System.out.println("程序出现异常,变量b不能为0"); // }finally {//处理善后工作 // System.out.println("finally"); // } // try {//监控区域 // new Test().b(); // }catch (StackOverflowError e){//catch(需要捕获的异常类型) 捕获异常 // System.out.println("StackOverflowError"); // }catch (Exception e){ // System.out.println("Exception "); // }catch (Throwable e){ // System.out.println("Throwable"); // } finally {//处理善后工作 // System.out.println("finally"); // } //输出StackOverflowError //finally //finally可以不要 假设IO、资源 要关闭 try { new Test().test(1,0); } catch (ArithmeticException e) { e.printStackTrace(); } finally { } } public void a(){ b(); } public void b(){ a(); } //假设这个方法中处理不了这个异常。方法上抛出异常 public void test(int a,int b) throws ArithmeticException{ if(b==0){ // throw throws throw new ArithmeticException();//主动抛出异常;一般在方法中使用 } System.out.println(a/b); } }
public static void main(String[] args) { int a=1; int b=0; //Ctrl+Alt+T try { System.out.println(a/b); } catch (Exception e) { e.printStackTrace();(打印错误的栈信息) } finally { } }