- 1. 先看代码
- 1.1 代码1
- 1.2 代码2
- 2. 避坑
- 2.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);
}
}
会抛出如下异常
遇到浮点型为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("程序继续执行");
}
}
- 输出结果



