为什么我要替换异常?

时间:2010-12-27 22:01:13

标签: c# exception exception-handling enterprise-library

我正在使用Enterprise Library 5.0,这是一个管理横向问题的工具,例如从日志中删除。

该工具给我的一个选项是“替换”异常。在某些情况下我可以看到换行的目的,但为什么我要完全替换异常?

由于

4 个答案:

答案 0 :(得分:4)

如果原始异常包含敏感的专有数据或类似内容,并且您只是想批量更换它,该怎么办?这可能是包装不合适的一种情况,因为您要做的是剥离敏感部件,但保留一组核心技术信息。我过去在财务应用程序中遇到过类似问题,例如,您不希望向供应商发送完整的内部日志。在这种情况下,需要将敏感和非敏感错误处理明确地分离到不同的日志接收器。

答案 1 :(得分:2)

有很多理由可以替换错误,就像其他答案一样,安全性是其中之一,但不是唯一的。有时您可能只想改进API,以便应用程序的不同层响应有意义的事情。例如,我不希望看到桌面应用程序的UI捕获SQL异常,解析该异常,然后告诉用户在数据库中找到了重复的密钥。相反,您可能有一个名为DuplicateRecordException的自定义异常,它从数据访问层抛出。此异常可能包括原始异常作为InnerException,但现在您从DAL出来的异常从UI层的角度来看是有意义的。

答案 2 :(得分:1)

我不知道这是否适用,但WCF也有这样的功能。在通信边界上传递所有错误信息有时会带来安全风险。

答案 3 :(得分:1)

我猜你在谈论异常处理块?我研究了一段时间,试图找到它背后的重点。诚然,我仍然没有真正得到它,但这是一个专业的责任。据我所知,它为IT员工提供了一些控制异常报告和处理方式的措施。

这与企业环境相关,其中创建例外的人(软件工程师)与必须处理它们的人(IT人员和用户)之间的部门差距可能难以弥合。使用难以穿透的异常消息崩溃的代码非常常见,在中间使用大量中间管理层修复代码可能非常困难且耗时。在这种情况下,能够改进诊断并帮助用户避免犯同样的错误,而不是必须杀死企业龙,这很有意义。