我目前正在学习如何正确执行自定义异常的过程,偶然发现了一个问题。每当我尝试利用引发该自定义异常的类的对象时,IDE的调试器(我使用的是IntelliJ想法)都会说“未处理的异常:InsertExceptionName()”。代码以简化的方式看起来像这样。在这种情况下,如果随机生成的数字我想念什么?

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块。在这种情况下,最好包围main

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


另一个解决方案是指定main引发“ RandomWeirdException”,而不是首先引发catch

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


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

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

10-11 22:27
查看更多