CodeBlanks Logo Icon CodeBlanks

Özel error

Kendi Error türevi sınıfını yazmayı öğrenirsin.

Özel error

Bazen hatanın türünü ayırt etmek istersin. özel error (custom error), Error sınıfından türetilmiş bir alt sınıftır. class ValidationError extends Error ile tanımlanır.

Alt sınıfta constructor yazıp super(message) ile üst sınıfın kurucusunu çağırırsın. Ayrıca this.name özelliğini sınıf adına ayarlarsın; böylece err.name "ValidationError" döner. Örneğin bir doğrulama hatası ile bir ağ hatasını ayırt etmek için ayrı sınıflar tanımlarsın. instanceof ile de tür denetimi yapabilirsin: err instanceof ValidationError. Bu, karmaşık uygulamalarda hata yönetimini düzenli tutar.

constructor ve super

Bir özel error sınıfında constructor metodu, üst sınıfın constructor'ını super(message) ile çağırmalıdır. Bu, message ve stack özelliklerinin doğru ayarlanmasını sağlar.

Örneğin class ValidationError extends Error { constructor(message) { super(message); this.name = "ValidationError"; } }. super(message) çağrılmazsa this kullanılamaz; bu bir ReferenceError verir. this.name ayarlanmazsa varsayılan "Error" kalır; bu da tür ayırt etmeyi zorlaştırır. instanceof yine de çalışır; ama name ile türü bir dize olarak da görmek isteyebilirsin. Bu yüzden her iki ayarı da yapmak en iyisidir.

Uygulama ValidationError sınıfını yaz ve yakala

ValidationError sınıfını tanımla; extends Error. constructor(message) içinde super(message) ve this.name = "ValidationError" ayarla. try'da throw new ValidationError("geçersiz"), catch (e)'de console.log(e.name) yaz.

Başlangıç kodu

index.js
// ValidationError sınıfını tanımla (extends Error)
// constructor'da super ve this.name ayarla
// try'da fırlat, catch'te name'i yazdır
// buraya yaz

Örnek çözüm

index.js
class ValidationError extends Error {
  constructor(message) {
    super(message);
    this.name = "ValidationError";
  }
}
try {
  throw new ValidationError("geçersiz");
} catch (e) {
  console.log(e.name);
}

Beklenen çıktı

ValidationError

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Parçayı rolüne eşle

Kavram Anlamı
extends Error Error'dan türetilir
super(message) Üst sınıfı çağırır
this.name Hata türünü ayarlar
class Yeni sınıf tanımlar

2 Özel error sınıfında this.name neden ayarlanır?

index.js
this.name = "ValidationError"
  • Bellek için
  • Hata türünü ayırt etmek için Doğru cevap
  • Gereksizdir
  • Performans için

Açıklama: name ile hatanın türünü ayırt edersin.

3 extends ile türet

Soru
class ValidationError ____ Error {}
Cevap
class ValidationError extends Error {}

Açıklama: extends Error ile Error'dan türetilir.

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