【发布时间】:2008-10-13 13:35:15
【问题描述】:
无论如何,我对何时传播异常以及何时包装它以及它们之间的区别有点困惑。
目前,我的理解告诉我,包装异常将涉及获取像 DriveNotFound(在 IO 中)这样的异常,然后用一般 IOException 包装它。
但是对于传播异常的概念,这是否只有在我有一个空的 catch 子句时才会发生?因此,在 ASP.NET Web 应用程序中,它会传播到 global.asax。或者在最近部署的 Web 应用程序的情况下,未处理的 HTTPException 导致黄屏死机并将日志写入 Windows Server(这是我正在重写的 Web 应用程序)。所以异常发生在方法中,可以在类级别处理,显示在页面中,然后上到 global.asax 或 Windows Server。
为什么我想用更通用的异常来包装异常?规则是处理具有最特定类型的异常(因此 DriveNotFound 显然是未找到驱动器)。另外,我将如何在包装和替换异常之间进行选择?
异常处理链只是 try 和 catch(或 catches)子句吗?我从措辞上假设是的。
最后,为什么以及如何让异常向上传播到调用堆栈?
我确实阅读了有关异常处理的 MS PandP 指南,但我想这些示例并没有让我充分理解所有内容。
这个问题来自企业库包装/传播异常等的能力。这是我不确定的传播,以及替换/包装异常的差异。
另外,是否可以在 catch 块中插入复杂的错误处理逻辑(例如 ifs/elses 和类似的东西)。
谢谢
【问题讨论】: