C++'ta Hata Yönetimi: Try-Catch Blokları ve İstisnaların Kullanımı

08.Dec.2023

C++ programlama dilinde hata yönetimi, uygulama güvenilirliğini artırmak ve hataların kontrol altında tutulmasını sağlamak için önemli bir konudur. Bu makalede, C++'taki try-catch blokları ve istisnaların nasıl kullanılacağına dair temel bilgileri inceleyeceğiz.

1. İstisna Temel Bilgileri

C++'taki istisnalar, programın normal akışını bozan ve işlem sırasında ortaya çıkan özel durumları temsil eden nesnelerdir. Bir fonksiyon ya da kod bloğu içinde bir hata oluştuğunda, program istisna fırlatır ve bu istisna uygun bir catch bloğu tarafından ele alınabilir.

#include <iostream>

int main() {
    try {
        // İstisna fırlatma
        throw std::runtime_error("Bir istisna oluştu!");
    } catch (const std::exception& e) {
        // İstisna yakalama ve işleme alma
        std::cerr << "Hata yakalandı: " << e.what() << std::endl;
    }

    return 0;
}

2. Birden Çok Catch Bloğu Kullanımı

Bir try bloğundan fırlatılan istisnalar, catch blokları tarafından belirli tiplerine göre yakalanabilir. Bu, farklı hata türlerine özgü işlemleri gerçekleştirmek için kullanışlıdır.

#include <iostream>

int main() {
    try {
        // İstisna fırlatma
        throw std::out_of_range("Geçersiz dizin!");
    } catch (const std::runtime_error& e) {
        std::cerr << "Runtime hatası: " << e.what() << std::endl;
    } catch (const std::out_of_range& e) {
        std::cerr << "Dizin hatası: " << e.what() << std::endl;
    } catch (const std::exception& e) {
        std::cerr << "Genel hata: " << e.what() << std::endl;
    }

    return 0;
}

 

3. Özel İstisna Türleri Oluşturma

Programcılar, kendi özel istisna türlerini oluşturarak, uygulama kodlarına özgü hataları temsil edebilirler.

#include <iostream>
#include <stdexcept>

class CustomException : public std::exception {
public:
    const char* what() const noexcept override {
        return "Bu benim özel istisna!";
    }
};

int main() {
    try {
        // Özel istisna fırlatma
        throw CustomException();
    } catch (const std::exception& e) {
        std::cerr << "Hata yakalandı: " << e.what() << std::endl;
    }

    return 0;
}

Bu makalede, C++'taki try-catch blokları ve istisna kullanımının temel konularını ele aldık. Hata yönetimi, bir uygulamanın sağlıklı ve güvenilir bir şekilde çalışmasını sağlamak için önemli bir unsurdur ve C++, bu konuda esnek bir yapı sunar.