明智地使用try/catch

RRM*_*RRM 1 c# error-handling try-catch

我希望这个话题不会太哲学:)

一般来说,我正在开发一个与外部世界有很多联系的应用程序.您可以保存和读取文件,连接到数据库,读取通过TCP协议传输的数据包,将打印任务发送到打印机,解析用户文本输入等.理论上,这些操作中的每一个都可能以许多可能的方式出错.

我的问题是我已经厌倦了为数百条指令编写try/catch块.它使代码长两倍,读取更糟糕,而不是做一些"真正的"编码,我继续写日志,这可能永远不会发生.

但还有其他选择吗?

你的方法是什么?制作所有这些try/catch块?或者只是忽略这些可能的错误并仅在用户报告后处理ACTUAL错误?

Should we never allow application to crash, should we predict any stupid action by an user or is it user problem not to do stupid actions?

And is it better to put big blocks of code into try/catch or put single instructions into it?

I'd be grateful for any advice or just opinion.

dav*_*v_i 5

如果代码的一部分可能中断,则不应使用异常.

例外情况适用于特殊情况!

这篇MSDN文章提出了一些明智的警示,即Tester-Doer模式和Try-Parse模式.

  • 不确定如何避免网络驱动代码的异常.听起来他并没有将它们用于控制流程. (3认同)