2 回答
TA贡献1839条经验 获得超15个赞
来源:Oracle - Java 教程 - “什么是异常? ”:
“在方法抛出异常之后,运行时系统会尝试找到一些东西来处理它。处理异常的可能“东西”的集合是已被调用以获取发生错误的方法的有序方法列表。 ”。
每个不直接提供处理异常的方法的函数都会返回给调用者,并带有成功的结果或未处理的异常供调用者处理。
一个可能遇到异常并且能够处理它的函数避免了让调用者处理它的需要,类似地,一个可以处理来自其子例程的异常的调用者可以节省在子例程中编写处理程序。
如果调用者正在调用可能都遇到相同错误条件的各种子例程,那么在调用者中处理它会导致更少的代码(以及异常处理的一致性),而不是在每个子例程中重写类似的代码,而这些代码会更好地由调用者处理.
来源:Oracle - The Java Tutorials - “ Unchecked Exceptions - The Controversy ”:
“如果可以合理地期望客户端从异常中恢复,则将其设为已检查异常。如果客户端无法从异常中恢复,请将其设为未检查异常。”。
尝试预测可能发生的事情并在可能的情况下处理它,如果它在多个被调用者中重复并让“树的叶子抓住轻松的工作” ,则始终尝试让调用者完成工作。
或者我应该运行足够的测试来找到所有异常并抛出它们?
编写测试工具可以是单独的,也可以是代码的一部分,如果它是内部的,那么通常(但并非总是)您希望在发布版本之外定义它。
TA贡献1812条经验 获得超5个赞
我认为应该抛出一个异常:
如果函数不能满足既定条件
它不能满足将要调用的函数的先决条件
如果这会导致其他成员不稳定
还有一些其他情况可以考虑,但基本上对我来说这些是要记住的主要事情。
添加回答
举报