在Java中抛出什么异常?

时间:2018-04-10 08:22:17

标签: java

假设我有来自足球队的地图 - >枚举(例如"Barcelona FC" -> FootballTeam.BARCELONA)。如果某个团队不在那里我应该抛出什么例外?

我正在考虑RuntimeException vs IllegalArgumentException,但它们都不适合这里。

3 个答案:

答案 0 :(得分:13)

NoSuchElementException

  

通过各种访问器方法抛出,以指示所请求的元素不存在。

答案 1 :(得分:2)

在这种情况下,您也可以考虑使用Java的Optional<T>类型。如果您的方法返回类似Optional<Team>的内容,那么您表示客户端请求的团队可能不存在。然后你决定如何对呼叫者做什么。例如:

  • 只有在特定团队存在时,来电者才可以使用Optional<Team>.ifPresent(Consumer<Team> consumer)继续处理
  • 如果请求的团队不存在,调用者可以使用Optional<Team>.orElse(Team team)返回特定值(包括null
  • 调用者可以使用Optional<Team>.orElseThrow(Supplier<Throwable> supplier)来生成在请求的团队不存在时必须抛出的特定异常。

我想说抛出异常应该是你的最后一个选择,因为它需要适当的处理以允许你的程序继续处理。

答案 2 :(得分:0)

虽然Andy's answer是完美的,但我想提一下,如果您对内置的Exception类不满意,可以随时创建自己的异常。

public class YourException extends Exception {

}

throw来自任何地方

throw new YourException();