Tag: 重新抛出

C ++exception问题重新抛出原始exception

catch中的append()是否会导致重新抛出的exception,以查看append()被调用的效果? try { mayThrowMyErr(); } catch (myErr &err) { err.append("Add to my message here"); throw; // Does the rethrow exception reflect the call to append()? } 同样,如果我用这种方法重写它,如果实际的exception是由myErr派生的,会不会发生位切片? try { mayThrowObjectDerivedFromMyErr(); } catch (myErr &err) { err.append("Add to my message's base class here"); throw err; // Do I lose the derived class exception and only get […]

重新抛出不正确的堆栈跟踪

我用“throw”重新抛出exception,但是堆栈跟踪不正确: static void Main(string[] args) { try { try { throw new Exception("Test"); //Line 12 } catch (Exception ex) { throw; //Line 15 } } catch (Exception ex) { System.Diagnostics.Debug.Write(ex.ToString()); } Console.ReadKey(); } 正确的堆栈跟踪应该是: System.Exception: Test at ConsoleApplication1.Program.Main(String[] args) in Program.cs:Line 12 但是我得到: System.Exception: Test at ConsoleApplication1.Program.Main(String[] args) in Program.cs:Line 15 但第15行是“投掷”的位置。 我用.NET 3.5testing了这个。