From 28d5b21e62cce7cae6da7ca34734983c072c5e82 Mon Sep 17 00:00:00 2001 From: hotn Date: Tue, 27 Dec 2016 11:29:04 -0600 Subject: [PATCH] Allow inner exceptions to be logged even if outer exception has no stack trace frames --- src/app/SharpBrake/AirbrakeNoticeBuilder.cs | 51 +++++++++++---------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/src/app/SharpBrake/AirbrakeNoticeBuilder.cs b/src/app/SharpBrake/AirbrakeNoticeBuilder.cs index 95da2c8..fec7b69 100644 --- a/src/app/SharpBrake/AirbrakeNoticeBuilder.cs +++ b/src/app/SharpBrake/AirbrakeNoticeBuilder.cs @@ -251,40 +251,41 @@ private AirbrakeTraceLine[] BuildBacktrace(Exception exception, out MethodBase c // Airbrake requires that at least one line is present in the XML. AirbrakeTraceLine line = new AirbrakeTraceLine("none", 0); lines.Add(line); - return lines.ToArray(); } - - foreach (StackFrame frame in frames) + else { - MethodBase method = frame.GetMethod(); + foreach (StackFrame frame in frames) + { + MethodBase method = frame.GetMethod(); - catchingMethod = method; + catchingMethod = method; - int lineNumber = frame.GetFileLineNumber(); + int lineNumber = frame.GetFileLineNumber(); - if (lineNumber == 0) - { - this.log.Debug(f => f("No line number found in {0}, using IL offset instead.", method)); - lineNumber = frame.GetILOffset(); - } + if (lineNumber == 0) + { + this.log.Debug(f => f("No line number found in {0}, using IL offset instead.", method)); + lineNumber = frame.GetILOffset(); + } - string file = frame.GetFileName(); + string file = frame.GetFileName(); - if (String.IsNullOrEmpty(file)) - { - // ReSharper disable ConditionIsAlwaysTrueOrFalse - file = method.ReflectedType != null - ? method.ReflectedType.FullName - : "(unknown)"; - // ReSharper restore ConditionIsAlwaysTrueOrFalse - } + if (String.IsNullOrEmpty(file)) + { + // ReSharper disable ConditionIsAlwaysTrueOrFalse + file = method.ReflectedType != null + ? method.ReflectedType.FullName + : "(unknown)"; + // ReSharper restore ConditionIsAlwaysTrueOrFalse + } - AirbrakeTraceLine line = new AirbrakeTraceLine(file, lineNumber) - { - Method = method.Name - }; + AirbrakeTraceLine line = new AirbrakeTraceLine(file, lineNumber) + { + Method = method.Name + }; - lines.Add(line); + lines.Add(line); + } } if (Configuration.LogInnerExceptions)