次のコードを使用して、MVC モデルの状態から例外を取得しています。
IEnumerable<string> exceptions = ModelState (x => x.Value.Errors
.Where(error => (error != null) &&
(error.Exception != null) &&
(error.Exception.Message != null))
.Select(error => error.Exception.Message));
try-catch ブロック例外の場合、例外 e を取得して、上記のように例外メッセージと内部例外メッセージも IEnumerable に入れる方法をコーディングするにはどうすればよいでしょうか?
私の問題は、複数レベルの例外が存在する可能性があるという事実を処理する方法がわからないことです。
これが役立つかどうかはわかりませんが、例外を文字列に入れるために以前に使用していたコードは次のとおりです。
public static string GetFormattedErrorMessage(this Exception e)
{
var exError = "";
if ( 1 == 1) {
if (e == null)
{
throw new ArgumentNullException("e");
}
exError = e.Message;
if (e.InnerException != null)
{
exError += "<br>" + e.InnerException.Message;
exError += "<br>" + e.StackTrace;
if (e.InnerException.InnerException != null)
{
exError += "<br>" + e.InnerException.InnerException.Message;
}
}
} else {
exError = "System error";
}
return exError;
}