2014-10-20 74 views
0

我在我的应用程序中使用Elmah进行错误报告。如果catch语句代码导致错误怎么办?

通常,如果出现错误,我会抓住它,制作一条自定义消息并将其返回。

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?

+0

“LogErrorManually”容易抛出吗?也许它应该尝试/捕捉自己。否则,它看起来不需要担心。如果你这样做,另一个尝试/抓住听起来像是你最好的选择。 – BradleyDotNET 2014-10-20 20:13:12

+0

调用它的方法是否有自己的try ... catch? – Mephy 2014-10-20 20:13:24

+10

抛出新的异常将导致您丢失堆栈跟踪。而是只考虑'throw;',或抛出一个包含原始异常的新异常作为内部异常。 – 2014-10-20 20:14:23

回答

1

你可以做到以下几点:

  1. 创建方法与说尝试捕捉A和允许调用你的函数,其抓住你已经在说明书中给出的B.
  2. 在你的乙渔获只使用这么扔你的堆栈跟踪不会消失。
  3. 在B catch的异常中,它会导航到catch A,因此您可以根据需要显示该消息。
+0

如果通过一个代码示例来解释它会好很多。 – 2014-10-20 21:55:01

+1

我花了一点时间才明白,但这是有道理的。 一个代码示例虽然对于任何人都会遇到这个问题是完美的。之后我会将其标记为答案。 – ArjaaAine 2014-10-20 21:57:09