栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

踩坑- java分母为浮点型的0时,无法抛出异常

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

踩坑- java分母为浮点型的0时,无法抛出异常

踩坑- java分母为浮点型的0时,无法抛出异常
  • 1. 先看代码
    • 1.1 代码1
    • 1.2 代码2
  • 2. 避坑
    • 2.1 使用自定义异常处理

1. 先看代码 1.1 代码1
    @Test
    public void test() {
        float a = 0.0f;
        try {
            float b = 5 / a;
            System.out.println(b + ":没有抛出异常");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
  • 输出
Infinity:没有抛出异常
1.2 代码2
    @Test
    public void test() {
        try {
            int b = 5 / 0;
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

会抛出如下异常

2. 避坑

遇到浮点型为0.0时的情况时,不要用try-catch来进行处理逻辑 否则不会捕捉异常,可以用IF判断的方法进行处理或者自定义异常处理。

2.1 使用自定义异常处理
  • 自定义异常类
public class DivideZeroException extends Exception{
    public DivideZeroException() {
        super();
    }
    public DivideZeroException(String message){
        super(message);
    }
}

  • main函数测试
public class HelloWorld {
    public static float divide(float a, float b) throws DivideZeroException {
        if(b == 0.0){
            throw new DivideZeroException("除以0.0异常");
        }
        return a / b;
    }
    public static void main(String[] args)  {
        try{
            float result = divide(5f, 0.0f);
            System.out.println("异常后不执行");
        }catch(DivideZeroException e){
            e.printStackTrace();
            System.out.println("catch块继续执行");
        }
        System.out.println("程序继续执行");
    }
}
  • 输出结果
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号