课时117:处理多个异常

简介: 课时117介绍如何处理多个异常。程序执行中可能出现多种异常,如未输入参数(ArrayIndexOutOfBoundsException)、输入非数字(NumberFormatException)和除数为0(ArithmeticException)。通过使用多个`catch`语句,可以分别捕获并处理这些异常,确保程序的健壮性。示例代码展示了如何在Java中实现这一机制,并通过`finally`块确保某些代码无论是否发生异常都会执行。修改后的代码能够正确处理所有提到的异常情况,避免程序中断。

课时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没有出现,证明外面的代码被中断了。

image.png

(2)【未处理】输入的数据不是数字(java JavaDemo a b):整个代码中牵扯到数字的转型,于是输入a和b,执行结果如下:java.lang.NumberFormatException;

image.png

(3) 【已处理】输入的被除数为0(java JavaDemo 10 0): 于是输入10和0,此时操作被正常处理完毕。

java.lang.ArithmeticException;

image.png

结论:现在即便有了异常处理语句,但是如果没有进行正确的异常捕获,那么程序也会导致中断(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都被处理了。

image.png

image.png

此时开发者已经明确的知道有那些异常了,那么用异常处理的原因是Catch 只是简单处理,并不是异常处理的精髓,要想异常处理的机制发挥到极致,就必须通过整体的异常处理结构来观察,对于异常类型永远记不完整,不要强制性要求记下,无意义,只需要用正确合理的异常操作,会达到想要的结果。

相关文章
|
2月前
|
Java
课时116:处理异常
本文介绍了Java中异常处理的基本概念和使用方法。通过`try`、`catch`和`finally`关键字,可以捕获并处理程序运行时可能出现的异常。`try`块包含可能引发异常的代码,`catch`块用于处理特定类型的异常,而`finally`块无论是否发生异常都会执行,常用于释放资源。文中还提供了几个范例,演示了如何处理算术异常、获取完整异常信息以及使用`finally`语句确保代码段的执行。
|
2月前
|
大数据 物联网 云计算
课时24:案例分享——中国邮政
在国企改革背景下,中国邮政积极推进行业信息化转型。通过与阿里云合作,中国邮政实现了核心业务云化,解决了高并发、资源不均衡等问题,并构建了PB级大数据平台,推动智能化分拣和寄递业务自动化。石崇斌总经理分享了邮政信息化发展历程及未来规划,强调以用户为中心的理念和技术应用的重要性。
课时24:案例分享——中国邮政
|
2月前
|
Java
课时115:认识异常对程序的影响
本内容为认识异常的捕获与处理的介绍,Java语言提供的最为强大的支持就在于异常的处理操作上。 1.认识异常对程序的影响 2.没有异常产生 3.产生异常
|
2月前
|
Java 开发者
课时118:异常处理流程
课时118介绍了异常处理流程,强调了理解异常类实例化对象的重要性。主要内容包括:异常处理的含义、异常产生的机制(如Try-Catch-Finally语句的使用)、常见的异常类型(如ArithmeticException和ArrayIndexOutOfBoundsException),以及简化异常处理的方法。通过示例代码展示了如何合理捕获和处理异常,确保程序的健壮性。特别指出,在多个异常同时处理时,应将捕获范围大的异常放在最后,以避免覆盖具体的异常处理逻辑。
|
2月前
课时121:异常处理模型
前面已经学习了异常处理格式: Try、Catch、Finally、Throws、Throw,现在合起来使用,下面通过一个具体的程序来演示一下。 要求定义一个可以实现除法计算的方法,在这方法之中,开发要求如下: (1)在进行数学计算开始与结束的时候,进行信息提示; (2)如果在程序之中,在进行计算的过程中,产生了异常,则要交给调用处进行异常处理。
|
2月前
|
设计模式 Java 开发者
课时92:案例分析一(获取类信息)
本文通过具体的Java开发案例,深入讲解抽象类与接口的相关知识,旨在巩固概念,引导读者深入思考,并掌握接口在实际编程中的应用,同时强调代码编写规范。 在Java编程中,抽象类与接口是极为核心的概念,它们也是众多设计模式的综合体现。在后续的学习过程中,开发者会频繁接触到系统提供的接口和抽象类。 因此,深入理解并巩固这些概念至关重要。在接口与抽象类都可使用的情况下,应优先选用接口,这是因为接口能有效避免单继承的局限性。接下来,将通过实际案例对相关概念进行分析。
|
2月前
|
存储 Java
课时66:案例分析一(学生类)
今天我分享的是关于 Java 中继承概念的案例分析(学生类)。主要分为以下三部分。 1. 案例要求阐述 2. 代码实现展示 3. 编译执行与目的
|
2月前
课时136:空集合判断
课时136介绍空集合的判断方法。首先定义空集合:链表中无任何数据即为空集合。接着在ILink接口中添加`isEmpty()`方法,用于判断链表是否为空,并在LinkImpl子类中实现该方法,可通过检查根元素是否为null或数据个数是否为0来实现。最后通过测试代码验证`isEmpty()`方法的有效性,成功实现了判断链表是否为空集合的功能。
【面试题精讲】异常使用有哪些需要注意的地方?
【面试题精讲】异常使用有哪些需要注意的地方?
|
11月前
|
安全 C++
详细解读c++异常模板复习
详细解读c++异常模板复习
50 0
OSZAR »