【发布时间】:2016-10-25 20:42:15
【问题描述】:
关于重复。我可以访问
Message属性,但不能访问Detail属性,即使在调试期间我可以看到它是异常对象的一部分。所以问题是为什么不能访问Detail属性。
我发现了一个异常。
catch (Exception ex)
{
string msg = ex.InnerException.InnerException.Message;
// say Exception doesnt have Detail property
// string detail = ex.InnerException.InnerException.Detail;
return Json(new { status = "Fail", message = msg, detail: detail });
}
ex.InnerException.InnerException. 最后是一些真实的消息,"db table duplicated key"
ex.InnerException.InnerException.Message 我可以收到消息。
但即使只有一个属性Detail,也无法获取详细信息"the guilty key"
- 那么我怎样才能得到详细信息呢?。
- 奖励:为什么必须深入
InnerException两次才能获得有意义的消息?
【问题讨论】:
-
遍历异常列表并尝试转换为特定的异常类型,如果转换成功则读取详细信息。
-
This 是我使用的方法。诀窍是
while (ex != null) { thisMsg = ex.Message; ex = ex.InnerException; }。这样,无论是 0 还是一堆,您都可以迭代所有内部异常。如何将所有消息连接到一个返回或单个消息中,这完全取决于您。 -
@L.B 可能你不是投票者,或者如果你是,你是他们中最好的,因为你留下了评论。 IMO 用户的声誉并不是拒绝投票的好理由。这是一个像其他问题一样的问题,看到这个问题有如此多的反对票真的很奇怪!也许用户是 C# 的初学者。
-
Getting all messages from InnerException(s)? 的可能重复编辑:已标记。至于他的第二个问题,重复的可能是here,但因为你不应该同时提出两个问题,所以我认为我不应该将其标记为两个问题的重复。
-
@L.B 不需要讽刺。如果您查看我的个人资料,我的更多代表来自 SQL 而不是 C#。另外,如果您看到我已经调试了代码并且找不到如何获取它。