[英]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.