attı hangi kod satırı belirlenmesi? Eğer mevcut ayıklama simgeleri varsa sadece bunu yapabilirBen hangi dosya içinde istisna attı hangi satır anlamaya nasıl bir çizgi bir istisna atar ve yakalanır Dotnet istisna
cevap
... nispeten basit görünüyor, ama ben onu anlamaya olamaz.
catch(Exception ex) {
// check the ex.StackTrace property
}
VS böyle bir durum hata ayıklamak istiyorsanız
, daha iyi sadeceDebug
menüsünde bulunan
Exceptions
iletişim
Common Language Runtime Exceptions
için
Thrown
onay kutusunu işaretleyin ediyorum. Hata ayıklayıcısını,
try
bloğunda olsa bile istisna atılır giderilmez kopar. Bir FirstChanceException denilen neyin var .NET,
try
{
...
...
}
catch(...)
{
StackFrame sf = new StackFrame(true);
int lineNumber = sf.GetFileLineNumber();
int colNumber = sf.GetFileColumnNumber();
string fileName = sf.GetFileName();
string methodName = sf.GetMethod().Name;
}
Sen StackFrame Class kullanabilirsiniz. Bunlar istisna yapılmadan önce esas olarak atılırlar. Burada sunmakta olduğunuz konuya bakmanın iki yolu vardır. Bir hata ayıklama noktasından. Hata ayıklama durumunda hata ayıklayıcınızı, Hata Ayıklama/İstisnalar penceresinden atılan istisnaları yakalamak için ayarlayabilirsiniz. Bu etkileşimli bir bağlamda daha kolaydır. olmayan bir interaktif kapsamında bu bilgileri kaydetmek gerekir EĞER CMS bahsettiğini sonra
try
{
...
}
catch(Exception ex)
{
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(ex);
System.Diagnostics.StackFrame firstFrame = stackTrace.GetFrame[0];
Console.WriteLine(firstFrame.GetFileLineNumber);
...
}
burada tek fark o zaman, bütün Yığın İzleme olsun ki ... benzer bir şey yapacağını istisnanın ilk olarak atıldığı ilk kareye git.
Bununla birlikte, bunun 'catch' maddesiyle ilgili bilgileri döndüreceğine dikkat edin ... istisnanın atıldığı yer değil, yakalandığınız istisnanın 'StackTrace' özelliğinin içeriğini kontrol etmeniz gerekir! – jerryjvl
Bu cevap yanlış, jerryjvl'nin belirttiği nedenlerden dolayı. Bu nasıl doğru kabul edilebilir? – Timwi
Kuyusu:
Çerçeve 0 geçerli değil, hata nereden kaynaklandı? –
Şahsen ben sadece istisnanın ToString() dönüş değeri kaydetmek. Bütün yığın izlemesi dahildir. Bu bir satır kod ... ölü basit.
Doğru cevap budur. – Timwi