我有一个函数在某些情况下返回null,比如:
public Class Foo {
public static Double bar(double a, double b) {
if (a == 0 || b == 0) return null;
return a + b;
}
}
我想做另一个函数,它做完全相同的事情,除了它抛出一个错误,而不是返回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不喜欢这样做,并在“throw”令牌上给我一个语法错误(并告诉我它不能从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());
问题内容: 我在实现Runnable的类中的run()中调用的方法被设计为引发异常。 但是Java编译器不允许我这样做,建议我用try / catch包围它。 问题是,通过用try / catch包围它,我使 特定的 run()无效了。我 确实 想抛出该异常。 如果我指定的run()的本身,编译器会抱怨说。 通常,我对run()不会抛出异常完全满意 。但是,在我必须具有该功能的特殊情况下。 如何解
问题内容: 我一直不得不放置没有任何其他条件的其他条件。反正周围有吗?例如 基本上,有什么方法可以做: 现在它显示为语法错误 仅供参考,这是一些真实的示例代码: 问题答案: 首先,三元表达式不能替代if / else构造-它等同于 返回 值的if / else构造。也就是说,if / else子句是code,三元表达式是 expression ,表示它返回一个值。 这意味着几件事: 仅当在变量的左
三元运算符 三元运算符 ? 应该只用在它能让代码更加清楚的地方。 一个条件语句的所有的变量应该是已经被求值了的。类似 if 语句,计算多个条件子句通常会让语句更加难以理解。或者可以把它们重构到实例变量里面。 推荐: result = a > b ? x : y; 不推荐: result = a > b ? x = c > d ? c : d : y; 当三元运算符的第二个参数(if 分支)返回和条
问题内容: 请解释为什么异常出现在第一个程序中而不是第二个程序中。 1)在read方法中没有return语句 2)在读取方法中使用return语句 问题答案: 最终不应该在内部使用分支语句(return,goto),因为这样的语句的执行会使在最终之前执行的其他指令无效。 在Java语言规范说:如果try块的执行任何其他原因[R突然结束,那么finally块被执行,然后有一个选择: 如果finall
我有以下python代码: 这里发生了什么?我无法理解这一点,因为不是布尔值。
rank ▲ ✰ vote url 5 1187 203 1370 url 在Python中有三元运算符吗? 如果没有,可以像其他语言用的简单方法来实现吗? 有,在2.5版本中加入.对于python初学者可能有点难以理解,所以要记住了. 语法如下: a if test else b 根据test的布尔值来判断返回的是a还是b;如果test为真则返回a,反之则返回b. 来个大栗子: >>> 'tr