Java异常处理 try catch finally 多重catch 异常分类处理

Java异常处理 try catch finally 多重catch 异常分类处理

输入两个数进行求商

使用if-else语句实现实现处理异常
import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入第一个数:");if (sc.hasNextInt()) {int firstInt = sc.nextInt();System.out.println("请输入第二个数:");if (sc.hasNextInt()) {int secondInt = sc.nextInt();if (secondInt == 0) {System.out.println("除数不能为0");} else {System.out.println("商:" + firstInt / secondInt);}} else {System.out.println("第二个数不是int类型的数据!");}} else {System.out.println("第一个数不是int类型的数据!");}}
}

用if-else堵漏洞的缺点:

  • 代码臃肿、可读性差,业务代码和处理异常的代码混在一起
  • 程序员需要花费大量的经历来维护这个漏洞且很难堵住所有的漏洞。
使用try-catch处理异常
public class Test {public static void main(String[] args) {try {Scanner sc = new Scanner(System.in);System.out.println("请录入第一个数:");int num1 = sc.nextInt();System.out.println("请录入第二个数:");int num2 = sc.nextInt();System.out.println("商:" + num1 / num2);} catch (Exception e) {System.out.println(e);}}
}
  • 当Java运行时系统得到一个异常对象时,它将会寻找处理这一异常事件的代码。
  • 寻找的过程从生成异常对象的代码块开始,沿着方法的调用栈逐层回溯,直到找到一个方法能够处理这种类型的异常为止。然后Java运行时系统把当前异常对象交给这个方法进行处理。这一过程称为捕获(catch)异常。
  • 如果Java运行时系统找不到可以捕获异常的方法,则Java运行时系统终止,相应的Java程序也将退出。

原理:把可能出现异常的代码放入try代码块中,然后将异常封装为对象,被catch后面的( e )中异常对象接收;接收以后,执行catch后面的{ }里面的代码,try-catch后面的代码不受影响。

  • try中没有异常,catch中代码不执行;try中有异常,catch进行捕获
    • 如果catch中异常类型和抛出的异常类型匹配:成功捕获,执行catch中的代码
    • 如果catch中异常类型和抛出的异常类型不匹配:未成功捕获,不执行catch中的代码,程序相当于遇到了无法处理的异常,程序中断,后续代码不执行

Note:try中如果出现异常且用catch捕获成功,那么try中后续的代码是不会执行的;当然没捕获成功程序中断也不会执行。如果catch捕获异常成功,程序不会中断,那么try-catch后面的代码没有影响。

catch异常处理方式

  • 佛系处理:什么都不写,什么都不做

  • 我行我素:输出自定义异常信息

  • 中规中矩:打印异常信息

    • 调用toString方法,显示异常的类名(全限定路径)
    • 显示异常描述信息对应的字符串,如果没有就显示null
    • 显示异常的堆栈信息
  • 破罐子破摔:异常抛回

对一些特定的异常可以再使用代码补救,比如被除数为0,可以在catch中再输入一次

import java.util.Scanner;public class Test {public static void main(String[] args) {//实现一个功能:键盘录入两个数,求商:try {Scanner sc = new Scanner(System.in);System


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部