库中的异常处理策略

Asa*_*f R 5 .net c# exception-handling exception

构建.NET库时,您的异常处理策略是什么?具体来说,您在处理库调用中的异常并将它们暴露给调用代码的策略是什么?

例如,

  • 您是否将库函数视为任何其他函数,从而让它无法处理的所有异常都按原样流出?
  • 你会为该库创建一个自定义例外吗?
  • 你会捕获所有异常并抛出库的异常吗?您是否将原始异常设置为库的异常内部异常?
  • 库对数据库的依赖会如何影响您的异常处理策略?

您建议在.NET库中进行异常处理的准则和规则是什么?

Jef*_*nal 2

您是否会像对待其他函数一样对待库函数,从而让它无法处理的所有异常按原样流出?

是的,这绝对是默认策略。

您会为该库创建自定义异常吗?

是的,如果调用者可以对这种情况采取一些措施,并且为此他们需要能够区分该异常与其他异常。但这种情况非常罕见。

库对数据库的依赖将如何影响您的异常处理策略?

数据库依赖项可能需要公开设置,让调用者指定库如何处理某些异常(例如,MaximumDeadlockRetries)。

您会捕获所有异常并抛出库的异常吗?您会将原始异常设置为库的异常内部异常吗?

不,并非所有例外。对于特定的异常,这是远程可能的,尽管我能想到的唯一可能想要执行此操作的情况是当我的库已经尝试处理异常(如上面的数据库场景中)并失败时。