【发布时间】:2013-04-15 09:03:24
【问题描述】:
如何在 C# 中的类库项目中编写一个捕获所有异常处理程序,这样对于库中发生的任何异常,外部调用者只会给一个自定义异常。
我找到的最接近的解决方案是实现一个Facade 类,从中调用低级类,并在 Facade 的每个调用中写入 try..catch,如果下面发生任何异常,这将引发单个自定义异常。
我搜索了解决方案,但只找到了 Web 应用程序(使用应用程序上下文捕获异常) 例如How to implement one "catch'em all" exception handler with resume?
我需要在类库级别或库级别的使用者上实现它,但如果可以通过编写最少的异常处理语句来完成,那就太好了。
【问题讨论】:
-
你的意思是有一个现有的库可以抛出任何东西,你想让它看起来好像只抛出一个(新的)特定类型的异常?
-
@Jon 我正在编写一个库,我希望它只在外部抛出一个自定义异常。
-
您考虑过使用
AOP框架吗? -
@ImranRizvi:那么,除了
throw new MyCustomException(...),不要在你的代码中写任何东西。那有什么问题?虽然我不得不说这听起来不是一个普遍的好主意。你为什么要这样做?
标签: c# .net design-patterns