繁体   English   中英

有没有办法在使用三元运算符的返回语句中抛出异常?

[英]Is there a way to throw an exception in a return statement that uses the ternary operator?

我有一个 function 在某些情况下返回 null,例如:

public Class Foo {
    public static Double bar(double a, double b) {
        if (a == 0 || b == 0) return null;
        return a + b;
    }
}

而且我想制作另一个 function 做同样的事情,除了它抛出一个错误而不是返回 null 如果满足该条件。 我试过这样做:

public Class Foo {

    public static Double bar(double a, double b) {
        if (a == 0 || b == 0) return null;
        return a + b;
    }

    public static Double barWithException(double a, double b) {
        return bar(a, b) == null ? throw new IllegalArgumentException() : bar(a, b);
    }

}

不幸的是 Java 不喜欢这样,并在“抛出”标记上给我一个语法错误(并告诉我它不能从 IllegalArgumentException 转换为 Double)。 我能想到的唯一其他方法是这样的:

public Class Foo {
    
        public static Double bar(double a, double b) {
            if (a == 0 || b == 0) return null;
            return a + b;
        }
    
        public static Double barWithException(double a, double b) {
            if (bar(a, b) == null) throw new IllegalArugmentException();
            return bar(a, b);
        }
    
    }

这当然很好,我只是想知道是否有一种方法可以在一行中执行此操作,或者将异常抛出集成到条件运算符中。 任何帮助是极大的赞赏。

您可以为此使用Optional

return Optional.ofNullable(bar(a, b))
        .orElseThrow(() -> new IllegalArgumentException());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM