我应该总是在try-catch中包装外部资源调用吗?(即调用数据库或文件系统)调用外部资源时是否有最佳的错误处理方法?
只捕获您可以处理的异常.因此,例如在使用外部资源时,最佳做法是捕获您知道可以处理的特定异常.在文件的情况下,这可以是(IOException,SecurityException等),在数据库的情况下,异常可以是SqlException或其他.
在任何情况下,不要捕获您不处理的异常,让它们流向可以的上层.或者,如果由于某种原因你捕获异常但不处理它们,只需使用throw重新抛出它们; (这将创建一个重新抛出IL op,而不是trow).
如果使用的资源不知道可能抛出什么类型的异常,则会被迫捕获常规异常类型.在这种情况下,保险箱的用途是使用来自不同应用程序域的所述资源(如果可能),或者让异常冒泡到顶层(ex UI),在那里可以显示或记录它们.