C# Exception Yönetimi Hakkında
-
Merhabalar.
C#'ta işimi çok kolaylaştıran bir WinForms uygulamam var. Bir sürü şey yapıyor benim için ama zamanında bok gibi kodlama yaptığımdan dolayı içerisi allaha emanet çalışıyor :D
Asenkron yapıda kendisi, Bir ana method kendi içerisindeki alt methodları çağırıyor vs vs ama bunlardan birisi hata alırsa bir logger mekanizmam var ve basit şekilde txt dosyasına log atıp uygulamaya hata verdirip kapatıyor.
Şuanda ben bu sistemi "Loglama + Toast Notification" sistemine çeviriyorum yani herhangi bir adımda Try'da hata alırsa ve Catch'e düşerse geriye Customer bir exception modelimi throw ediyorum.
Bir üstteki methodda da try-catch var, onun üstünde de try-catch var. İç içe 12 method varsa 12 tane try-catch var. Bu bana yanlış geliyor :DWinForms için kullanabileceğim ve kendi CustomerExceptionModelimi dönebileceğim bir yapı var mıdır ?
Not: Kod vs yazabiliyorum ama ince işçilik kısmında çok gerideyim.
-
https://stackoverflow.com/questions/372282/exception-handling-in-c-multple-try-catches-vs-one
şu şekilde tek try ile tüm catchleri handle edemiyor musun?
-
kodu kopyala chatgpt ye yapıştır "şunu düzeltiver birader sarhoşken yazdım" de. 3-5 mallık yapacak , olmayan 2-3 lib uyduracak. onları temizle dene bakalım işini görür mü
-
try-catch kullanıp kullanmamak doğru mu bilemedim. Sonuçta uygulamamda bir yerde hata çıkabilir. Benim bu hatayı loglamam lazım ve sonrasında uygulama kendi içerisinde dursun ya da o adımı yok sayıp devam etsin fark etmez ama bir şekilde N. basamaktaki hatayı yakalamam lazım :D
-
Windows form ile yazdığını varsayıyorum.
https://stackoverflow.com/questions/8148156/winforms-global-exception-handling
-
tek try catch ile catch de stacktrace de hangi kod satırında hata olduğunu bulup, cs dosyanda hata veren kod satırını okuyup ayıklayabilirsin.
StackTrace stackTrace = new StackTrace(ex, true);StackFrame frame = stackTrace.GetFrame(0);var method = frame.GetMethod();int lineNumber = frame.GetFileLineNumber();string hataVerenSatir = null;Console.WriteLine($"Hatanın gerçekleştiği metod: {method.Name}");Console.WriteLine($"Hata satır numarası: {lineNumber}");string fileName = frame.GetFileName();if (fileName != null){string[] lines = System.IO.File.ReadAllLines(fileName);if (lineNumber >= 1 && lineNumber <= lines.Length){hataVerenSatir = ($"Hata veren kod: ''{lines[lineNumber - 1]}''");}}