Beispiel #1
0
    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);
    }
Beispiel #3
0
    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}");
             }
         }
     }
 }
Beispiel #7
0
        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
                );
        }
Beispiel #8
0
 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);
     }
 }