Özel hata sınıfları
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
-
Ö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.
-
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'; } } -
Hata özelliklerini anlamlarıyla eşleştir
- name
- Hata türü etiketi
- message
- Açıklama metni
- stack
- Çağrı yığını izi