返回一个值并抛出异常?

mar*_*ark 21 java exception-handling exception

我正在使用声称如果成功则返回true的API,如果失败则返回false.但是,如果它失败,它还声称会抛出不同的例外.它如何返回false并抛出异常?

小智 28

抛出异常并从单个函数调用返回值是不可能的.

也许它会像返回一样,false如果有错误,但如果输入无效则抛出异常.

编辑:PaulPRO发布了一个(现在删除的)答案,指出技术上可能会导致异常被抛出到另一个线程中,同时返回当前值中的值.我认为这值得注意,即使它不是你应该看到的东西.

  • @ Karel-Jan Misseghers:不,在Java中你的程序确实**一旦抛出异常就绝对不会停止运行.您对Java异常如何工作感到困惑,显然还没有完成任何多线程Java编程.当在另一个线程中发生未经检查的异常时,您可以让很多线程愉快地继续工作.在很多情况下,死亡线程会自动重启(最着名的是某些OS/JVM上的Swing的EDT:如果EDT死机,则重新启动新的EDT). (2认同)
  • 啊哈,多线程,我现在就安静一下(我已经看过 Java 中多线程编程的理论,但还没有使用它)抱歉造成混乱! (2认同)

Boh*_*ian 21

您可以抛出一个具有(在本例中为boolean)值的异常:

public class ValueException extends Exception {
    final boolean value;

    public ValueException(boolean value, String message) {
        super(message);
        this.value = value;
    }

    public boolean getValue() {
        return value;   
    }
}
Run Code Online (Sandbox Code Playgroud)