public void Ctor_CopyFrom_InnerExceptions() { var template = new InvalidOperationException("outer", new InvalidCastException("inner")); var errorData = new CommonErrorData(template); Assert.Equal(template.GetType().FullName, errorData.TypeName); Assert.Equal(template.Message, errorData.Message); Assert.Equal(template.InnerException.GetType().FullName, errorData.Inner?.TypeName); Assert.Equal(template.InnerException.Message, errorData.Inner?.Message); }
public void Ctor_Message_Code_Data() { var data = new CommonErrorData(); var ex = new RemoteInvocationException(SomeMessage, 123, data); Assert.Equal(SomeMessage, ex.Message); Assert.Equal(123, ex.ErrorCode); Assert.Same(data, ex.ErrorData); Assert.Null(ex.DeserializedErrorData); }
public void Ctor_CopyFrom_NeverThrown() { var template = new CustomException(5, "msg"); var errorData = new CommonErrorData(template); Assert.Equal("msg", template.Message); Assert.Equal(template.HResult, errorData.HResult); Assert.Null(errorData.Inner); Assert.Equal(typeof(CustomException).FullName, errorData.TypeName); Assert.Null(errorData.StackTrace); }
public void Serializable() { var data = new CommonErrorData(); var deserializedData = new CommonErrorData(); var original = new RemoteInvocationException(SomeMessage, 123, data, deserializedData); var deserialized = BinaryFormatterRoundtrip(original); Assert.Equal(original.Message, deserialized.Message); Assert.Equal(original.ErrorCode, deserialized.ErrorCode); Assert.Null(deserialized.ErrorData); Assert.Null(deserialized.DeserializedErrorData); }
private static void ContributeInnerExceptionDetails(StringBuilder builder, CommonErrorData errorData) { builder.AppendLine($" ---> {errorData.TypeName}: {errorData.Message}"); if (errorData.Inner is object) { ContributeInnerExceptionDetails(builder, errorData.Inner); } ContributeStackTrace(builder, errorData); builder.AppendLine(" --- End of inner exception stack trace ---"); }
private static void ContributeStackTrace(StringBuilder builder, CommonErrorData errorData) { if (errorData.StackTrace != null) { using (var sr = new StringReader(errorData.StackTrace)) { while (sr.ReadLine() is string line) { builder.AppendLine($" {line}"); } } } }
public static void ShowMessageBox(this CommonErrorData errorData) { string message = errorData.Message + Environment.NewLine + errorData.StackTrace; Log.Write( errorData.TypeName, message, LogLevel.Error ); MessageBox.Show( message, errorData.TypeName, MessageBoxButtons.OK, MessageBoxType.Error ); }
public void Ctor_CopyFrom_ThrownStackTrace() { try { throw new CustomException(5, "msg"); } catch (Exception template) { var errorData = new CommonErrorData(template); Assert.Equal("msg", template.Message); Assert.Equal(template.HResult, errorData.HResult); Assert.Null(errorData.Inner); Assert.Equal(typeof(CustomException).FullName, errorData.TypeName); Assert.NotNull(errorData.StackTrace); this.Logger.WriteLine(errorData.StackTrace); } }