- 检查性异常:用户错误或问题
- 运行时异常:程序员问题
- 错误ERROR:不是异常
异常处理框架
java把异常当对象来处理,定义一个基类java.lang.Throwable作为所有异常的超类,这些异常分为两大类,错误Error和Exception
异常处理机制
异常处理机制
抛出异常
捕获异常
publicclassDemo01{publicstaticvoidmain(String[]args){inta=1;intb=0;try{//try监控区域System.out.println(a/b);}catch(ArithmeticExceptione){//catch 捕获异常System.out.println("程序出现异常,变量b不能为0");}finally{//处理善后工作System.out.println("finally");}//finally 可以不要finally,假设IO流,资源关闭try{//try监控区域newDemo01().a();}catch(Throwablee){//catch(想要捕获的异常类型) 捕获异常System.out.println("程序出现异常");}finally{//处理善后工作System.out.println("finally");}//假设要捕获多个异常:从小到大!try{//try监控区域System.out.println(a/b);}catch(Errore){//catch(想要捕获的异常类型) 捕获异常System.out.println("Error");}catch(Exceptione){System.out.println("Exception");}catch(Throwablee){System.out.println("Throwable");}finally{//处理善后工作System.out.println("finally");}}publicvoida(){b();}publicvoidb(){a();}}publicclassTest{publicstaticvoidmain(String[]args){inta=1;intb=0;/* try { System.out.println(a / b); } catch (Exception e) { System.exit(1); e.printStackTrace();//打印错误的栈信息 } finally { } new Test().test(1,0); */try{newTest().test(1,0);}catch(ArithmeticExceptione){e.printStackTrace();}}//假设这个方法中处理不了这个异常,方法上抛出异常publicvoidtest(inta,intb)throwsArithmeticException{if(b==0){//throw throwsthrownewArithmeticException();//主动抛出异常,一般在方法中使用}}}异常处理五个关键字:try,catch,finally,throw,throws
选中System.out.println(a/b);
Ctrl+Alt+T 快捷键
自定义异常
packagedemo02;//自定义的异常类publicclassMyExceptionextendsException{//传递数字>10privateintdetail;publicMyException(inta){this.detail=a;}//toString:异常的打印信息@OverridepublicStringtoString(){return"MyException{"+detail+'}';}}packagedemo02;publicclassTest{//可能会存在异常的方法staticvoidtest(inta)throwsMyException{System.out.println("传递的参数为:"+a);if(a>10){thrownewMyException(a);//抛出}System.out.println("OK");}publicstaticvoidmain(String[]args){try{test(11);}catch(MyExceptione){//增加一些处理异常的代码System.out.println("MyException:"+e);}}}