【java】一文带你了解异常处理
异常文章目录异常try-catch-finally函数名声明时抛出自定义异常类关于自定义对象的输出信息异常分为两种一种编译时异常是一定要进行处理的不然编译都不会过一种是运行时异常比如索引越界算术异常空指针异常等这种在编译的时候不会报错而是在运行到这行代码才会报错。一种是在函数内部进行处理用try-catch或者try-catch-finally来处理。处理异常的方法也有两种一种是在函数声明的时候抛出然后由函数调用者进行异常处理。try-catch-finallypublicclassException{publicstaticvoidmain(String[]args){try{intresultdivide(4,0);System.out.println(result);}catch(ArithmeticExceptione){System.out.println(算术异常e.getMessage());//System.exit(0);}finally{System.out.println(除了jvm关闭以外一定会处理的finally);}System.out.println(try catch 外);}publicstaticintdivide(intx,inty){intresultx/y;returnresult;}}运行结果无System.exit(0) 算术异常/by zero 除了jvm关闭以外一定会处理的finallytrycatch外 有System.exit(0);算术异常/by zero函数名声明时抛出在函数声明抛出没有进行处理则程序在检测到异常的时候直接抛出然后不进行后面代码publicclassException{publicstaticvoidmain(String[]args){intresultdivide(4,0);System.out.println(result);System.out.println(divide 后的代码);}publicstaticintdivide(intx,inty)throwsArithmeticException{intresultx/y;returnresult;}}//结果Exceptionin threadmainjava.lang.ArithmeticException:/by zero atException.divide(Exception.java:23)atException.main(Exception.java:17)在函数声明抛出在调用处处理程序在抛出异常后仍然会进行下面的代码publicclassException{publicstaticvoidmain(String[]args){try{intresultdivide(4,0);System.out.println(result);System.out.println(divide 后的代码);}catch(ArithmeticExceptione){System.out.println(异常e.getMessage());}System.out.println(try-catch后面的代码);}publicstaticintdivide(intx,inty)throwsArithmeticException{intresultx/y;returnresult;}}//结果异常/by zerotry-catch后面的代码自定义异常类classDivideByMinusExceptionextendsException{//无参构造publicDivideByMinusException(){super();}//有参构造publicDivideByMinusException(Stringmessage){super(message);}}publicclassmyException{publicstaticvoidmain(String[]args){intresult0;try{resultdivide(4,-1);System.out.println(result);}catch(DivideByMinusExceptione){System.out.println(e.getMessage());}}//抛出异常publicstaticintdivide(intx,inty)throwsDivideByMinusException{if(y0){//自定义异常信息//这个自定义异常信息就是构造一个新对象把值传进去只要传递对的参数进去就行。thrownewDivideByMinusException(除数是负数);}elseif(y0){thrownewDivideByMinusException(除数是零);}returnx/y;}}结果//resultdivide(4,-1)除数是负数//resultdivide(4,0);除数是零//resultdivide(4,1);4关于自定义对象的输出信息来自菜鸟教程//自定义异常类继承Exception类publicclassInsufficientFundsExceptionextendsException{//此处的amount用来储存当出现异常取出钱多于余额时所缺乏的钱privatedoubleamount;//need传递到这里来need在下面异常处理里publicInsufficientFundsException(doubleamount){this.amountamount;}//使用提示信息的时候就用e.getAmount来获取需要的金额publicdoublegetAmount(){returnamount;}}// 文件名称 CheckingAccount.javaimportjava.io.*;//此类模拟银行账户publicclassCheckingAccount{//balance为余额number为卡号privatedoublebalance;privateintnumber;publicCheckingAccount(intnumber){this.numbernumber;}//方法存钱publicvoiddeposit(doubleamount){balanceamount;}//方法取钱publicvoidwithdraw(doubleamount)throwsInsufficientFundsException{if(amountbalance){balance-amount;}else{doubleneedsamount-balance;//这里的need传进去创建对象thrownewInsufficientFundsException(needs);}}//方法返回余额publicdoublegetBalance(){returnbalance;}//方法返回卡号publicintgetNumber(){returnnumber;}}