CodeBlanks Logo Icon CodeBlanks

Özel hata sınıfları

JavaScript kursu · Orta seviye · Ders 100/134

Error sınıfını extends ederek kendi hata sınıfını oluşturmayı öğrenirsin.

Özel hata sınıfları

JavaScript'in yerleşik Error sınıfını extends ederek kendi hata türünü oluşturursun. Alt sınıf yapıcısında super ile mesajı üst sınıfa iletir, this.name özelliğini sınıf adına ayarlarsın. Böylece hatayı türüne göre ayırt edebilir ve her türü farklı şekilde işleyebilirsin.

class ValidationError extends Error {
  constructor(message) {
    super(message);
    this.name = 'ValidationError';
  }
}

Buradaki class ... extends Error yazımı Error türünden yeni bir hata türü üretir; sınıfları ileri seviyede ayrıntılı göreceksin. Şimdilik bu kalıbı olduğu gibi kullanman yeterli.

Özel hatayı fırlatmak

Özel hata sınıfını tanımladıktan sonra throw new ValidationError('...') ile fırlatırsın. Bu, sıradan bir Error fırlatmaktan farklı olarak hatanın türünü netleştirir ve yakalama tarafının buna göre davranmasını sağlar. Fırlatılan hata, çağrı zincirinde yukarı doğru ilerler ve uygun bir catch bloğunda yakalanır.

function validateEmail(email) {
  if (!email.includes('@')) {
    throw new ValidationError('Geçersiz e-posta');
  }
}

Uygulama ValidationError sınıfını yaz

ValidationError adlı bir hata sınıfı yaz. Error sınıfını extends etsin. Yapıcısı message parametresi alsın, super(message) çağırsın ve this.name özelliğini 'ValidationError' dizesine ayarlasın.

Örnek çözümü göster
class ValidationError extends Error {
  constructor(message) {
    super(message);
    this.name = 'ValidationError';
  }
}

Kendini test et

  1. Özel hata sınıfında super neden çağrılır?

    • Mesajı Error sınıfına iletmek için
    • Hata fırlatmak için
    • Sınıfı dondurmak için
    • Async yapmak için
    Cevabı göster

    Mesajı Error sınıfına iletmek için — Doğru! super(message) mesajı Error sınıfına iletir.

  2. Sınıfı Error'dan türet

    class ValidationError ____ {
      constructor(message) {
        super(message);
        this.name = 'ValidationError';
      }
    }
    Cevabı göster
    class ValidationError extends Error {
      constructor(message) {
        super(message);
        this.name = 'ValidationError';
      }
    }
  3. Hata özelliklerini anlamlarıyla eşleştir

    name
    Hata türü etiketi
    message
    Açıklama metni
    stack
    Çağrı yığını izi

Orta seviye bölümündeki tüm dersler