Özel error
- Node.js kursu
- Orta seviye
- Ders 78/116
- 5 dk
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
// 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
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?
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
class ValidationError ____ Error {}
class ValidationError extends Error {}
Açıklama: extends Error ile Error'dan türetilir.