• Java 异常的捕获及处理 要点 习题


    活动地址:CSDN21天学习挑战赛

    一、要点

    下面对异常的捕获及处理做一总结:

    1、异常是导致程序中断运行的一种指令流,当异常发生时,如果没有进行良好的处理,则程序将会中断执行。

    2、异常可以使用try•••catch进行处理,也可以使用try•••catch•••finally进行处理,在try语句中捕捉异常,然后在catch中处理异常,finally作为异常的统一出口,不管是否发生异常都要执行此段代码。

    3、异常的最大父类是Throwable,其分为两个子类,分别为Exception、Erroro。Exception 表示程序处理的异常,而Error表示JVM错误,一般不由程序开发人员处理。

    4、发生异常后,JVM会自动产生一个异常类的实例化对象,并匹配相应的catch语句中的异常类型,也可以利用对象的向上转型关系直接捕获Exception。

    5、throws用在方法声明处,表示本方法不处理异常。

    6、throw表示在方法中手工抛出一个异常。

    7、自定义异常类时,只需要继承Exception类即可。

    8、断言是JDK 1.4后提供的新功能,可以用来检测程序的执行结果,但开发中并不提倡使用断言进行检测。

    9、最后
    (1)通过继承java.lang.Exception类声明自己的异常类。
    (2)在方法适当的位置生成自定义异常的实例,并用throw语句抛出。
    (3)在方法的声明部分用throws语句声明该方法可能抛出的异常。

    二、习题

    题目:编写应用程序,从命令行输入两个小数参数,求它们的商。要求程序中捕获 NumberFormatException异常和ArithmeticException异常。

    分析:ArithmeticException 算数异常:判断除数是否为0; NumberFormatException 数字格式异常:判读输入的数字是否是数字

    代码如下:

    import java.util.Scanner;
    public class Demo {
        public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            while(true){
                try{
                    System.out.println("输入除数");
                    float f1 = Float.parseFloat(s.nextLine());
                    System.out.println("输入被除数");
                    float f2 = Float.parseFloat(s.nextLine());
                    if(f2==0){
                        throw new ArithmeticException("捕获到除0异常~~!!");//手动抛出除零异常
                    }
                    float result = f1/ f2;
                    System.out.println("计算结果:" + f1 + "/" + f2 + "=" + result);
                    break;//如果能正常运行到这里,说明前面的输入都是正确的,所以可以跳出循环了
                }catch(NumberFormatException e1){//捕获数字格式异常
                    System.out.println("捕获到数字格式异常");
                }catch (ArithmeticException e2) {//捕获到除零异常
                    System.out.println(e2.getMessage());
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    运行结果:

    输入除数
    4
    输入被除数
    0
    捕获到除0异常~~!!
    输入除数
    2
    输入被除数
    a
    捕获到数字格式异常
    输入除数
    6
    输入被除数
    9
    计算结果:6.0/9.0=0.6666667


    看到最后,点个赞吧!
  • 相关阅读:
    MCE丨重组蛋白常见的融合标签
    【自然语言处理】:实验5,司法阅读理解
    [附源码]Python计算机毕业设计Django绿色生活交流社区网站
    贪心算法(二) | 重叠区间问题 | leecode刷题笔记
    Flask框架中Jinja2模板中测试器(判断值类型)
    【毕业季·进击的技术er】机械专业在校生的学习规划
    RHCE之搭建DNS服务器
    [附源码]java毕业设计中小企业人力资源管理系统
    微服务架构 | 服务网关 - [Gateway]
    论文解读(AutoSSL)《Automated Self-Supervised Learning for Graphs》
  • 原文地址:https://blog.csdn.net/CSDN_anhl/article/details/126312079