课时117:处理多个异常
摘要:
1. 异常的含义
2. 修改程序代码
01. 异常的含义
在程序执行的过程之中可能会产生若干个异常,这种情况下可以使用多个 Catch 进行异常的捕获。假设通过初始化参数来进行两个数学计算数字的设置。
代码:
Public class JavaDemo { Public static void main(string args []) { System.out.println ( "【1】****** 程序开始执行 ******") ; Try { Int x = Integer.parseInt ( args [0] ) ; // 初始化参数是通过字符串输入 Int y = Integer.parseInt ( args [1] ) ; System.out.println ( "【2】****** 数学计算: ”+ (x/y)) ; } catch (ArithmeticException e ) { E. printstackTrace () ; } Finally { System.out.println ( "【F】 不管是否出现异常,我都会执行。“); } System.out.println ( "【3】****** 程序执行完毕******") ; } }
对于此时的程序就有可能产生三类异常:
(1)【未处理】程序执行的时候没有输入初始化参数(java JavaDemo
):运行后出现 java.lang.ArrayIndexOutOfBoundsException
,此时F出现了,3没有出现,证明外面的代码被中断了。
(2)【未处理】输入的数据不是数字(java JavaDemo a b
):整个代码中牵扯到数字的转型,于是输入a和b,执行结果如下:java.lang.NumberFormatException;
(3) 【已处理】输入的被除数为0(java JavaDemo 10 0
): 于是输入10和0,此时操作被正常处理完毕。
java.lang.ArithmeticException;
结论:现在即便有了异常处理语句,但是如果没有进行正确的异常捕获,那么程序也会导致中断(Finally 的代码依然执行),所以在这样的情况下就必须进行多个异常的捕获。
02. 修改程序代码
代码:
Public class JavaDemo { Public static void main(string args []) { System.out.println ( "【1】****** 程序开始执行 ******") ; Try { Int x = Integer.parseInt ( args [0] ) ; Int y = Integer.parseInt ( args [1] ) ; System.out.println ( "【2】****** 数学计算: ”+ (x/y)) ; } catch (ArithmeticException e ) { E.printstackTrace () ; } catch (NumberFormatException e ) { E.printstackTrace () ; } catch (ArrayIndexOutOfBoundsException e ) { E.printstackTrace () ; } Finally { System.out.println ( "【F】 不管是否出现异常,我都会执行。“); } System.out.println ( "【3】****** 程序执行完毕******") ; } }
编译程序结果如下:没传参数、传的参数不是数字、传的参数被除数数字为0都被处理了。
此时开发者已经明确的知道有那些异常了,那么用异常处理的原因是Catch 只是简单处理,并不是异常处理的精髓,要想异常处理的机制发挥到极致,就必须通过整体的异常处理结构来观察,对于异常类型永远记不完整,不要强制性要求记下,无意义,只需要用正确合理的异常操作,会达到想要的结果。