Вы могли использовать часть даты и времени для создания уникального имени файла, тот способ, которым это не дублировано, когда вызвано несколько раз.
Is это то, что вы ищете?
String innerMessage = (ex.InnerException != null)
? ex.InnerException.Message
: "";
Да:
if (ex.InnerException == null) {
// then it's null
}
Иногда также InnerException имеет InnerException, поэтому вы можете использовать для него рекурсивную функцию:
public string GetInnerException(Exception ex)
{
if (ex.InnerException != null)
{
return string.Format("{0} > {1} ", ex.InnerException.Message, GetInnerException(ex.InnerException));
}
return string.Empty;
}
Самое простое решение - использовать базовое условное выражение:
repEvent.InnerException = ex.InnerException == null ?
null : ex.InnerException.Message;
Забавно, я не могу найти ничего плохого в Exception.GetBaseException () ?
repEvent.InnerException = ex.GetBaseException().Message;
Пока отличные ответы. Аналогичным образом, но по-другому, иногда существует более одного уровня вложенных исключений. Если вы хотите получить изначально сгенерированное корневое исключение, независимо от его глубины, вы можете попробовать следующее:
public static class ExceptionExtensions
{
public static Exception GetOriginalException(this Exception ex)
{
if (ex.InnerException == null) return ex;
return ex.InnerException.GetOriginalException();
}
}
И в использовании:
repEvent.InnerException = ex.GetOriginalException();