同一个系列中有两本矛盾的书

《Head First Python》

《Head First C#》

所以我到底应该信哪个啊

python·c#
221 views
Comments
登录后评论
Sign In
·

看哪种写法更加合适就用哪种,这两种做法都不是银弹,比如上面的找不到文件错误,如果你写的是底层代码,作为库被别人调用,那么应该抛出来,如果写的是应用层代码,那么应该先 check exists

·

还有极限场景下,先 check exists 成功后也可能出现 FileNotFoundException,比如检查成功时程序还没执行结束,文件被其他接口删除了(没有锁),所以说严格没有 bug 的程序是很难做到的,看你做的东西需要多大的可靠性,6 个 9 还是 9 个 9

·

这不是一个选择题。

·

谨慎地使用try可以让代码更易读、更易写。” ——《Head First Python》

“尽管有些异常是无法避免的,但你会发现,让人惊讶的是,很多异常根本不必抛出。” ——《Head First C#》

实际上,这不是一个1或者0的问题。两者都在强调合理地使用异常,因为大部分时候异常的处理和功能的关系是不大的。大量的异常会使程序充斥着大量与核心功能无关的代码。总体来说,对异常的使用应该偏向于克制。

·

我觉得:

当你能处理抛出一个异常的所有状况的时候,catch这个异常。

当你不能处理所有状况的时候,处理部分状况避开这个异常,其他时候任其崩溃。