WinForms和Asp类库中的异常处理

时间:2014-04-24 09:12:47

标签: asp.net .net vb.net winforms exception-handling

我一直在编写一个包含业务逻辑的类库,它将在一个新的winforms项目和一个现有的asp.net项目中使用。

在开发过程中,我用

乱丢了图书馆
Try 
'Whatever
Catch ex as exception
 Msgbox("Friendly error message", ex.message) 
end try

哪个适用于winforms,但不适用于asp.net 我需要一种友好(且简单)的方法来捕获适用于两个平台的异常。 或者更好的问题可能是我应该在类库中捕获异常吗?

4 个答案:

答案 0 :(得分:2)

我不想登录库,最好抛出异常让消费者处理它。

答案 1 :(得分:2)

如果只有你将使用该库,那么可以决定是否要记录异常。如果您的图书馆将被第三方使用,那么我建议不记录该例外。

但在任何一种情况下你都应抛出异常,以便调用应用程序可以决定如何处理它。

我已经创建了VB6和VB.NET应用程序使用的程序集,并且我记录了程序集中抛出的异常,因为VB6应用程序无法访问堆栈跟踪以记录它

答案 2 :(得分:2)

  

或者更好的问题可能应该是我应该在类库中捕获异常吗?

没有。类库永远不应该对异常做些什么。您只是模糊了发生错误的真正原因,使开发人员更难理解出现了什么问题。

该开发者是您还是其他开发者并不重要。因为当你从现在起一年后返回代码时,你将不知道究竟发生了什么(除非原始异常完好无损)。

对于异常处理,我100%反对在应用程序中到处都有try / catch语句。真的没有任何好处。在WinForms中,使用Application.ThreadException事件向用户显示消息框。在ASP.NET中覆盖Error事件以记录异常并显示友好的错误页面。

我还创建了一个名为OneTrueError的服务,它可以为您处理所有事情。它有一个你可以使用的免费版本。

答案 3 :(得分:1)

您真的应该集中记录消息。我们使用网络服务。查看visual studio插件中的一些免费错误处理/陷阱应用程序。有些人可以随意使用(见直布罗陀放大镜 - 扩展名)。

如果你真的必须,创建一个单独的类,你可以全部让它确定传输和日志记录机制。