虽然这一建议似乎显而易见,但它经常被违反,因此值得重复。当API的设计人员声明一个抛出异常的方法时,他们试图告诉您一些事情。不要忽视它!在方法调用的周围加上一条try语句,其catch块为空,很容易忽略异常:
image.png
空catch块违背了异常的目的,这是为了迫使你处理异常情况。忽略异常类似于忽略火灾警报——关掉它,这样其他人就没有机会看到是否真的发生了火灾。你可能侥幸逃脱,或者结果可能是灾难性的。每当你看到一个空的捕捉块,你的脑海中就会响起警报。
在某些情况下,忽略异常是合适的。例如,在关闭FileInputStream时,它可能是合适的。您没有更改文件的状态,因此不需要执行任何恢复操作,并且已经从文件中读取了所需的信息,因此没有理由中止正在进行的操作。记录异常可能是明智的,这样如果这些异常经常发生,您就可以研究这个问题。如果您选择忽略异常,catch块应该包含一条解释为什么这样做是合适的注释,并且变量应该被命名为ignore:
本项目中的通知同样适用于已检查的异常和未检查的异常。不管异常是表示可预测的异常条件还是编程错误,用空catch块忽略它将导致程序在错误面前保持静默。然后,程序可能会在未来的任意时间失败,在代码中与问题源没有明显关系的某个点上。正确处理异常可以完全避免失败。仅仅让异常向外传播至少会导致程序迅速失败,保留信息以帮助调试失败。
本文写于2019.7.22,历时1天
网友评论