Olası Çoğalt: Genellikle .NET
throw;
yığın izlemesini sıfırlanmaz olduğu kabul edilmektedir
incorrect stacktrace by rethrowatış; yığın izleme sıfırlanmaz söylenir, ancak belli koşullar
ama throw ex;
yapar.
void Main()
{
try
{
try
{
Wrapper(); // line 13
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
throw; // line 18
}
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
}
public void Wrapper()
{
Throw(); // line 28
}
public void Throw()
{
var x = (string)(object)1; // line 33
}
çıkışı:
System.Web.HttpUnhandledException: için türündeki nesne 'System.ınt32' yayın yapılamıyor
Ancak bu basit programda, farklı satır numaralarını almak 'System.String' yazın. ConsoleApplication2.Program.Main de (String [] args) C: \ uzun yol \ program.cs: hattı 13
System.InvalidCastException: tip 'System.ınt32' nesne türü döküm edilemiyor 'Sistemi .String'. ConsoleApplication2.Program.Main de (String [] args) C: \ uzun yol \ program.cs: hattı 18
Not: İlk yığın izleme hattı 13 içerir, ikinci ek hat 18 içerir ne satır 13 ne de satır 18, dökümün gerçekte gerçekleştiği satırlardır.
Soruma şimdi bakıyorum: throw;
hangi koşullarda yığın izlemeyi değiştiriyor ve hangi durumda yığın izini değiştirmiyor?
Lütfen bunun zaten been observed olduğunu, ancak genel olarak yanıtlanmadığını unutmayın. Ben hata ayıklama modunda yukarıdaki kodu koştum
ve bu verir:
GÜNCELLEME
System.Web.HttpUnhandledException: 'yazın 'System.ınt32' türündeki nesne artığını açılamıyor System.String'. ConsoleApplication2'de ConsoleApplication2.Program.Throw (Program) 'da , ConsoleApplication2'de satır 33 : C: \ long-path \ Program.cs: satır 28 . C: \ long-path \ Program.cs: satır 13:
System.InvalidCastException: 'System.Int32' türünde nesne 'System.String' yazmak için kullanılamıyor. ConsoleApplication2'de ConsoleApplication2.Program.Throw (Program) 'da , ConsoleApplication2'de satır 33 : C: \ long-path \ Program.cs: satır 28 . Program.Main C (string [] args): \ uzun yol \ program.cs: satır 18
unutmayın:
İstisnalar içinde ayrıntılandırılan satır numaralarının, sağladığınız kod snippet'i ile ilişkili olması durumunda yardımcı olur. –
@PeterRitchie: Done. –