在显示错误消息之前关闭并处置资源?

时间:2010-07-02 08:56:25

标签: error-handling locking

在显示错误消息之前关闭和处理资源是不错的做法?

如果您发现错误并且在与资源(如数据库和文件对象)相同的范围内显示错误消息,则不应关闭这些资源并在之前将处理掉显示错误消息?

如果您正在等待这些资源退出范围,那么只有在关闭错误消息对话框后才会执行此操作。这意味着用户可以将错误消息留在屏幕上一段时间,这样做可以锁定某些资源。

例如

try { ... }
catch (Exception e) {
   // should close/dispose resources here
    ...
    ...
   MessageBox("Error");
}

3 个答案:

答案 0 :(得分:1)

最好不要在catch块中显示任何UI。相反,处理finally块中的资源,但返回一些值,指示发生错误并让调用方法处理它,必要时使用UI。

其中一个变体是处理finally块中的资源并让catch块重新抛出调用方法要处理的异常。

答案 1 :(得分:0)

您可以尝试使用finally块。

http://msdn.microsoft.com/en-us/library/zwc8s4fz.aspx

答案 2 :(得分:0)

最好将资源放在

using( ) { } scope

或使用RAII,因此当它们退出范围时,它们会在消息框被点击之前正确整理。