MAUI MİMARİSİ #13: Exception Handling ve Global Hata Yakalama Mekanizmaları

Exception Handling ve Global Hata Yakalama Mekanizmaları

Exception Handling ve Global Hata Yakalama Mekanizmaları

1. Konunun Mimari Önemi ve Temel Çalışma Prensipleri

Exception handling, yazılım mimarisinde çok önemli bir kavramdır. Bu mekanizma, uygulamanın çalışırken ortaya çıkan hataları yakalayarak programın çökmesini önler. Temel çalışma prensipleri arasında try-catch-finally blokları, finally bloğunun her zaman çalıştığı garantisi ve özel exception sınıflarının kullanılması sayılabilir. Bu prensipler, hataları belirli bir şekilde yöneterek, daha sağlam ve güvenilir uygulamalar geliştirme imkanı sunar.

2. Kurumsal Projelerde Dikkat Edilmesi Gereken En İyi Pratikler (Best Practices)

  • Spesifik Exception Türlerini Kullan: Genel exception türlerini kullanmak yerine, hataları daha spesifik bir şekilde ele almak daha iyi bir uygulamadır.
  • Exception Hiyerarşisini Kullan: .NET’te System.Exception sınıfından türetilen özel exception sınıfları kullanılmalıdır.
  • Global Exception Handler Kullan: Global exception handler ile tüm uygulamada ortaya çıkan hataları bir yerde yönetebilirsiniz.
  • Loglama: Hataların detaylı loglanması, sorunların daha hızlı tanı ve çözümü için önemlidir.
  • Kullanıcıya Anlaşılır Hata Mesajları: Kullanıcıya gösterilecek hata mesajları genellikle spesifik exception ayrıntılarını içermemelidir.

3. Gerçek Dünya Senaryolarına Uygun Kod Bloğu Örneği

Aşağıda, C# (.NET MAUI) uygulamasında global exception handler ile hataları yönetme örneği bulunmaktadır:


using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

public class GlobalExceptionHandler
{
    private readonly ILogger _logger;

    public GlobalExceptionHandler(ILogger logger)
    {
        _logger = logger;
    }

    public void ConfigureExceptionHandler(IServiceProvider services)
    {
        AppDomain.CurrentDomain.FirstChanceException += (sender, args) =>
        {
            _logger.LogError(args.Exception, "First Chance Exception: {Message}", args.Exception.Message);
        };

        AppDomain.CurrentDomain.UnhandledException += (sender, args) =>
        {
            _logger.LogError(args.Exception?.ToString(), "Unhandled Exception: {Message}", args.Exception?.Message);
        };

        TaskScheduler.UnobservedTaskException += (sender, args) =>
        {
            _logger.LogError(args.Exception?.ToString(), "Unobserved Task Exception: {Message}", args.Exception?.Message);
            args.SetObserved();
        };
    }
}
    

4. Performans Optimizasyonu ve Olası Darboğazlar

Exception handling işlemi performans açısından yüksektir. Bu nedenle, exception’ların aşırı olarak kullanılması performans sorunlarına yol açabilir. Ayrıca, hataları çok genel bir şekilde yakalama, belirli hataların yönetilmesini zorlaştırabilir. Bu nedenle, exception handling mekanizmalarının etkin ve optimize olması için:

  • Exception’ların sadece beklenen durumlarda kullanılmalıdır.
  • Spesifik exception türlerine göre farklı işlemler yapılmalıdır.
  • Exception’ların loglanması ve raporlanması sırasında performans kaybını önlemek için asenkron loglama kullanılmalıdır.
NasuhAkay
NasuhAkay

Nasuh Akay, 20 yılı aşkın IT deneyimine sahip; kurumsal teknoloji çözümleri, ERP sistemleri, yazılım geliştirme, veri yönetimi ve dijital dönüşüm alanlarında çalışmalar yürüten bir teknoloji profesyonelidir.

Kariyeri boyunca farklı sektörlerde edindiği deneyimlerini; teknoloji, yazılım, veri mimarisi ve iş süreçlerinin geliştirilmesi üzerine yoğunlaştırmıştır.

Bu blogda ERP çözümleri, SQL Server, yazılım geliştirme, yapay zekâ, dijital dönüşüm ve teknoloji dünyasındaki gelişmeler üzerine bilgi, deneyim ve teknik paylaşımlarını okuyucularla buluşturmaktadır.

Amacı, karmaşık teknik konuları anlaşılır bir dille ele almak, gerçek hayatta karşılaşılan problemlere yönelik uygulanabilir çözümler sunmak ve teknoloji alanındaki bilgi birikimini paylaşmaktır.

Articles: 1188

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir