【问题标题】:Throw new exception in Ternary condition [duplicate]在三元条件下抛出新异常[重复]
【发布时间】:2015-07-14 04:42:21
【问题描述】:

我有这行代码:

List<Long> list = new ArrayList<>();

if (n < 0) throw new RuntimeException();

if (n == 0) return list;

我想使用Ternary condition

return (n < 0) ? (throw new RuntimeException()) : list;

但我有编译时异常。

【问题讨论】:

  • 这对于三元运算符是不可能的。您必须改用if
  • 我认为应该是三者中的操作。 throws 不是操作。
  • @ryekayo 我有编译时错误,illegal start of expression
  • 对于陷入这个问题并寻找 C++ 答案的人。这在 C++ 中是允许的,三元运算符中的一个或两个选项都允许为 throw。也许这就是混乱的根源。 stackoverflow.com/questions/7957696/…

标签: java ternary-operator


【解决方案1】:

您不能在三元子句中抛出异常。两个选项都必须返回一个 throw new Exception(); 不满足的值。

解决办法,使用if

【讨论】:

    【解决方案2】:

    它不能编译,因为你想做的事情在 Java 中是不合法的。 你不能返回throw new RuntimeException()。你的回报总是要返回一个值。

    你必须使用 if 而不是 that。

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多