假设我有来自足球队的地图 - >枚举(例如"Barcelona FC" -> FootballTeam.BARCELONA
)。如果某个团队不在那里我应该抛出什么例外?
我正在考虑RuntimeException
vs IllegalArgumentException
,但它们都不适合这里。
答案 0 :(得分:13)
通过各种访问器方法抛出,以指示所请求的元素不存在。
答案 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();