为了账号安全,请及时绑定邮箱和手机立即绑定

我应该抛出什么异常

我应该抛出什么异常

慕标5832272 2021-08-13 16:28:52
我是新手,正在学习 Java 异常,public void function (argument) {     if (condition) {        throw new Exception;     }}我的困惑是:如果我知道这种情况会导致 NullPointerException,那么我可以抛出 NullPointerException。如果代码抛出一些我没想到的异常,或者说我不知道我的代码的异常是什么,我应该抛出什么?喜欢这个链接 什么时候抛出异常? 说:“每个函数都会问一个问题。如果给出的输入使该问题成为谬误,那么抛出异常。”但是如果输入确实使一个问题成为谬论,但我自己不知道这个输入会导致这个谬误,我应该抛出什么?或者我应该运行足够的测试来找到所有异常并抛出它们?我知道我的问题很奇怪,但如果你知道我在说什么,请给我一些指示。谢谢
查看完整描述

2 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

来源:Oracle - Java 教程 - “什么是异常? ”:

“在方法抛出异常之后,运行时系统会尝试找到一些东西来处理它。处理异常的可能“东西”的集合是已被调用以获取发生错误的方法的有序方法列表。 ”。

每个不直接提供处理异常的方法的函数都会返回给调用者,并带有成功的结果或未处理的异常供调用者处理。

一个可能遇到异常并且能够处理它的函数避免了让调用者处理它的需要,类似地,一个可以处理来自其子例程的异常的调用者可以节省在子例程中编写处理程序。

如果调用者正在调用可能都遇到相同错误条件的各种子例程,那么在调用者中处理它会导致更少的代码(以及异常处理的一致性),而不是在每个子例程中重写类似的代码,而这些代码会更好地由调用者处理.

来源:Oracle - The Java Tutorials - “ Unchecked Exceptions - The Controversy ”:

“如果可以合理地期望客户端从异常中恢复,则将其设为已检查异常。如果客户端无法从异常中恢复,请将其设为未检查异常。”。

尝试预测可能发生的事情并在可能的情况下处理它,如果它在多个被调用者中重复并让“树的叶子抓住轻松的工作” ,则始终尝试让调用者完成工作。

或者我应该运行足够的测试来找到所有异常并抛出它们?

编写测试工具可以是单独的,也可以是代码的一部分,如果它是内部的,那么通常(但并非总是)您希望在发布版本之外定义它。


查看完整回答
反对 回复 2021-08-13
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

我认为应该抛出一个异常:

  • 如果函数不能满足既定条件

  • 它不能满足将要调用的函数的先决条件

  • 如果这会导致其他成员不稳定

还有一些其他情况可以考虑,但基本上对我来说这些是要记住的主要事情。


查看完整回答
反对 回复 2021-08-13
  • 2 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信