2010-07-02 82 views
0

在显示错误消息之前关闭并处理资源是否是一种好的做法?在显示错误消息之前关闭并处理资源?

如果正在捕捉错误和你显示在相同的范围内的资源,例如数据库和文件对象的错误消息,然后不应这些资源被关闭和处置之前错误消息被显示?

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

例如。

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

回答

0

更好地被投入

using() { } scope 

或使用RAII你的资源,使他们辍学的范围,他们被正确收拾了消息框被击中了。

0

你可以尝试使用finally块。

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

+0

这是如何解决这个问题?我正在等待某人在错误消息对话框中单击确定。 finally块只会在这之后执行,不是吗? – CJ7 2010-07-02 09:10:58

+0

最佳做法是添加到finally块。 – Simmo 2010-07-02 13:55:42

1

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

其中的一种变化是将finally资源放置在finally块中,并让catch块重新抛出调用方法处理的异常。