我一直在编写一个包含业务逻辑的类库,它将在一个新的winforms项目和一个现有的asp.net项目中使用。
在开发过程中,我用
乱丢了图书馆Try
'Whatever
Catch ex as exception
Msgbox("Friendly error message", ex.message)
end try
哪个适用于winforms,但不适用于asp.net 我需要一种友好(且简单)的方法来捕获适用于两个平台的异常。 或者更好的问题可能是我应该在类库中捕获异常吗?
答案 0 :(得分:2)
我不想登录库,最好抛出异常让消费者处理它。
答案 1 :(得分:2)
如果只有你将使用该库,那么你可以决定是否要记录异常。如果您的图书馆将被第三方使用,那么我建议不记录该例外。
但在任何一种情况下你都应抛出异常,以便调用应用程序可以决定如何处理它。
我已经创建了VB6和VB.NET应用程序使用的程序集,并且我记录了程序集中抛出的异常,因为VB6应用程序无法访问堆栈跟踪以记录它
答案 2 :(得分:2)
或者更好的问题可能应该是我应该在类库中捕获异常吗?
没有。类库永远不应该对异常做些什么。您只是模糊了发生错误的真正原因,使开发人员更难理解出现了什么问题。
该开发者是您还是其他开发者并不重要。因为当你从现在起一年后返回代码时,你将不知道究竟发生了什么(除非原始异常完好无损)。
对于异常处理,我100%反对在应用程序中到处都有try / catch语句。真的没有任何好处。在WinForms中,使用Application.ThreadException
事件向用户显示消息框。在ASP.NET中覆盖Error
事件以记录异常并显示友好的错误页面。
我还创建了一个名为OneTrueError的服务,它可以为您处理所有事情。它有一个你可以使用的免费版本。
答案 3 :(得分:1)
您真的应该集中记录消息。我们使用网络服务。查看visual studio插件中的一些免费错误处理/陷阱应用程序。有些人可以随意使用(见直布罗陀放大镜 - 扩展名)。
如果你真的必须,创建一个单独的类,你可以全部让它确定传输和日志记录机制。