java - Java 中未处理的异常

标签 java exception unhandled

我目前正在学习如何正确执行自定义异常,但我偶然发现了一个问题。每当我尝试使用引发此自定义异常的类的对象时,我的 IDE 调试器(我使用的是 IntelliJ idea)都会显示“未处理的异常:InsertExceptionName()”。代码以简化的方式看起来像这样。在这种情况下,如果随机生成的数字小于 0.5,它应该返回一个异常,否则返回一个数字,但它不会这样做。 我错过了什么?

public class main {
    public static void main(String[] args) {
        double x=Math.random();
        operation op=new operation();
        op.execute(x);
   }
}

-

public class operation {
    public operation() {
    }

    public double execute(double x) throws RandomWeirdException {
        if(x<0.5) {
            throw new RandomWeirdException("<0.5");
        }
        return x;
    }
}

-

public class RandomWeirdException extends Exception{
    public RandomWeirdException() {
        super();
    }
    public RandomWeirdException(String message) {
        super(message);
    }
}

最佳答案

“返回”异常是什么意思?抛出异常时,它会在调用堆栈中冒泡。

在这种情况下,您不处理它。它到达 main,因此您有一个未处理的异常。

如果你想处理异常,你可以使用 try-catch block 。在这种情况下,最好包围 main

try {
    // Code that might throw
    // an exception.
} catch (Exception e) {
    // Handle it.
}

另一种解决方案是指定 main 抛出“RandomWeirdException”,而不是首先捕获

public static void main(String[] args) throws RandomWeirdException { ... }

最好让函数throw,除非你能合理地处理异常情况。 如果你只是为了捕获而catch,而不在异常情况下做任何有意义的事情,这相当于有时隐藏错误。

关于java - Java 中未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27890597/

相关文章:

c# - 为什么我收到 FormatException 是未处理的错误?

java - 将我的 Java 应用程序连接到 SQL Server 2012

java - 使用正则表达式在 Java 中拆分字符串数组

java - 使用 Java 加载通用二进制文件

.net - 返回 ""代替正确的字符串

c# - 记录和累积来自不同服务器的异常的最佳方法是什么?

c# - 异常没有被定义

c++ - 未处理的异常 DirectX11.1 渲染 2D 图形

java - 如何处理包含加号(+)运算符的时间戳字符串

android.view.View$OnUnhandledKeyEventListener