java 异常捕捉机制练习

1.完成c=a/b 的计算并输出c的结果,可以为a和b在程序中赋初值、或者接收用户通过键盘输入a和b的数值文本后转换为数字等,在程序要求当 b 为0时c的计算结果正确.

这里使用到的try...catch来进行异常处理,格式如下:

/*
try...catch...异常处理方法
try{
    可能出现异常的代码;
}catch(异常类名 变量名){
    异常的处理代码;
}
*/

如果不用异常出来,当 int/int 中除数为0,会出现异常,如下:


import java.util.Scanner;

public class Abnormity //类名
{
    public static void main(String[] args) {
        //创建对象,从键盘录入数字
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入除数");
        int a = sc.nextInt();//定义int类型变量a接收键盘录入数字用作除数
        System.out.println("请输入被除数字");
        int b = sc.nextInt();//定义int类型变量b接收键盘录入数字用作被除数

        float  c = a/b; //定义float变量c用于存储a/b的值
        System.out.println("a/b的结果为:"+c);//输出c
    }
}

当a为5,b为0,会出现java.lang.ArithmeticException: / by zero 异常,结果如下:

使用try...catch处理如下:

/*
try...catch...异常处理方法
try{
    可能出现异常的代码;
}catch(异常类名 变量名){
    异常的处理代码;
}
执行流程:
程序从try里面的代码开始运行,出现异常会自动生成
一个异常类对象,该异常对象将被提交给java运行时系统
当java运行时系统接收到异常对象时,回到catch中去匹配异常类,
找到后进行异常的处理,执行完毕之后,程序还可以继续往下运行
 */
import java.util.Scanner;
public class Abnormity //类名
{
    public static void main(String[] args) {
        //创建对象,从键盘录入数字
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入除数");
        int a = sc.nextInt();//定义int类型变量a接收键盘录入数字用作除数
        System.out.println("请输入被除数字");
        int b = sc.nextInt();//定义int类型变量b接收键盘录入数字用作被除数

//        float  c = a/b; //定义float变量c用于存储a/b的值
//        System.out.println("a/b的结果为:"+c);//输出c

        try //里面时可能出现错误的代码
        {
            float  c = a/b; //定义float变量c用于存储a/b的值
            System.out.println("a/b的结果为:"+c); //输出c
        }catch (ArithmeticException e)//ArithmeticException是出现错误的类名
        {
            System.out.println("出现错误"); //当代码有异常时输出
        }
    }
}

 当被除数为0时会显示预先设置好的信息,结果如下:

 2.完成一个计算绝对值表达式 |a-b|的功能。 要求当b比a大时人为抛出一个自定义异常, 在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。

首先自定义一个异常类SubException如下:

//创建自定义异常类,继承与Exception
public class SubException extends Exception
{
    public SubException(String message)//定义构造方法
    {
        super(message); //继承于父类
    }
}

然后创建一个类用与计算绝对值以及处理抛出异常信息,如下:

public class Jueduizhi {
    //创建绝对值的方法jdz
    public void jdz(int a,int b ) throws SubException //使用throws抛出异常
    {
        if(b>a){ //如果b大于a,会产生异常对象,将这个异常对象跑出去
            throw new SubException("b>a,出现错误"); //throw 是用来在方法体内部抛出对象
        }else{
            System.out.println("a-b的绝对值为:"+(a-b)); //当a>b时输出正常的绝对值
        }
    }
}

最后创建一个类用与测试:

/*
完成一个计算绝对值表达式 |a-b|的功能。
要求当b比a大时人为抛出一个自定义异常,
在计算绝对值时通过异常捕捉机制完成此绝对值表达式的计算。
 */
public class JuiduizhiTest //类名
{
    public static void main(String[] args) {
        System.out.println("计算a-b的绝对值");
        //创建对象,从键盘录入数据
        Scanner sc = new Scanner(System.in);
        System.out.println("输出a的值");
        int a = sc.nextInt();//从键盘输入a的值
        System.out.println("输出b的值");
        int b = sc.nextInt();//从键盘输入b的值

        //创建Jueduizhi的对象
        Jueduizhi j = new Jueduizhi();
        try {
            //用对象来调用jdz方法执行a-b的绝对值
            j.jdz(a,b);//这里会显示异常,使用try...catch来处理
        } catch (SubException e) //SubException是自定义异常类名
        {
            e.printStackTrace(); //输出显示异常的信息
        }
    }
}

当a为5,b为6时结果如下:

异常类名就是自定义的SubException,显示的异常信息也是自行设置的。

当a为5,b为4就输出正常的绝对值:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值