Sobes.tech
Middle+

Projenin belirli bir bölümünün çalışmasını engellemek için hangi mekanizmalar vardır?

sobes.tech yapay zeka

AI'dan gelen yanıt

  • İstisnalar (Exceptions): Hata oluştuğunda kodun yürütülmesini durdurmaya ve kontrolü begin/rescue/ensure bloklarına aktarmaya olanak tanır.

    begin
      # Hata oluşturabilecek kod
      result = 1 / 0
    rescue ZeroDivisionError => e
      # Özel hata işleme
      puts "Sıfıra bölme hatası: #{e.message}"
      # Günlük kaydı veya alternatif yürütme olasılığı
    rescue StandardError => e
      # Diğer standart hataların işlenmesi
      puts "Başka bir hata oluştu: #{e.message}"
    ensure
      # Her zaman çalıştırılan kod
      puts "Blok sonu"
    end
    
  • Raise: Açıkça bir istisna tetikleme, hem standart hem de özel hata sınıfları için.

    # Normal istisna tetikleme
    raise "Bir şeyler ters gitti"
    
    # Belirli bir hata sınıfı ile tetikleme
    raise MyCustomError, "Geçersiz değer"
    
  • exit, abort, Kernel#exit!: Programın yürütülmesini sonlandırmak için kullanılan yöntemler. exit! programı hemen sonlandırır, at_exit işleyicilerini çağırmadan.

    # Normal program sonlandırma
    exit(0) # 0 başarılı sonlandırma anlamına gelir
    
    # Hata ile sonlandırma
    abort("Kritik hata nedeniyle sonlandırılıyor")
    
    # Zorunlu sonlandırma
    Kernel.exit!(1)
    
  • Thread#raise: Başka bir yürütme akışında istisna tetikleme.

    thread = Thread.new do
      begin
        loop { sleep 1 }
      rescue => e
        puts "İşlem yakalandı: #{e.class}"
      end
    end
    
    sleep 2
    thread.raise StandardError, "İşlemi durdur"
    thread.join
    
  • Programlama hataları (mantıksal, sözdizimsel): Kötü yazılmış kodlar çalışma sırasında hatalara yol açabilir.

    # Sözdizimi hatası (end eksik)
    def my_method
      puts "Merhaba"
    
    # Mantıksal hata (sonsuz döngü)
    while true
      puts "Döngü"
    end
    
  • İşletim sistemi sinyalleri (SIGTERM, SIGINT vb.): Programın dışarıdan kesilmesine neden olabilir.

    # SIGINT (Ctrl+C) sinyalini yakalama örneği
    Signal.trap("INT") { puts "\nSIGINT yakalandı. Sonlandırılıyor..."; exit }
    
    loop { sleep 1 }
    
  • Doğrulamalar (özellikle geliştirme ve test sırasında): Koşulları kontrol eden mekanizmalar, ihlal edilirse istisna atar veya başka bir işlem yapar. Ruby'de genellikle test kütüphaneleriyle uygulanır.

    # MiniTest kütüphanesi kullanımıyla örnek
    require 'minitest/autorun'
    
    class MyTest < Minitest::Test
      def test_bölme
        # Doğrulama: 4'ün 2'ye bölümü sonucu 2 olmalı
        assert_equal 2, 4 / 2
        # Doğrulama: sıfıra bölme ZeroDivisionError hatası vermeli
        assert_raises(ZeroDivisionError) { 1 / 0 }
      end
    end