【发布时间】:2014-12-15 22:22:14
【问题描述】:
我在我的应用程序中使用 Elmah 进行错误报告。
通常,如果我发现了错误,则制作自定义消息并再次将其返回。
catch (Exception ex)
{
var e = new Exception("Failed to get Intake Statuses <br />"
+ " (@PageNumber = " + pageNumber + ", @PageSize = " + pageSize + ".<br />"
+ " Error: " + ex);
ErrorLogger.LogErrorManually(e);
throw new Exception(e.Message);
}
现在,如果我创建的自定义错误中有错误,就会出现问题。
处理该问题的最佳做法是什么?我要创建另一个子 Try/Catch 吗?
【问题讨论】:
-
LogErrorManually容易被扔吗?也许它应该尝试/捕捉自己。否则,看起来你不需要担心它。如果你这样做了,再试一次/接住听起来是你最好的选择。 -
抛出一个新的异常会导致你丢失堆栈跟踪。请考虑只使用
throw;,或者抛出一个包含原始异常作为内部异常的新异常。 -
Do I created another nested Try/Catch loop?Try/catch 不是循环。这是一个声明。见try/catch C3 Reference。 -
而不是
throw new Exception(e.Message);,最好是使用throw new YourOwnCustomException("Your Message", ex);创建您自己的自定义异常,并将原始异常设置为内部异常,或者只使用throw;使用所有信息重新抛出原始异常。你真的不应该扔掉基本的Exception类,这被认为是一种不好的做法。 -
如果你想避免嵌套的try/catch,你应该检查null。
标签: c# .net exception-handling elmah