Özel exception
- Kotlin kursu
- Başlangıç
- Ders 104/116
- 5 dk
Kotlin'de özel istisna sınıfı yazmayı öğrenirsin.
Özel exception: kendi hata sınıfın
Uygulamana özgü hata türleri için kendi sınıfını tanımlayabilirsin. Genel bir exception türünden miras alır; mesajı kurucuya verirsin.
class TaskError(message: String) : Exception(message)
throw TaskError("Görev bulunamadı")Sınıf adı, hatanın nedenini açıkça anlatır. Exception yerine RuntimeException da seçebilirsin. Özel tür, hem yakalamayı hem de hata ayıklamayı kolaylaştırır.
Özel exception fırlatma ve yakalama
Tanımladığın sınıfı throw ile fırlatır, catch ile yakalarsın. Tür adı, hangi hatayı yakaladığını gösterir.
try {
throw TaskError("Bulunamadı")
} catch (e: TaskError) {
println(e.message)
}catch (e: TaskError) yalnızca bu türü yakalar. Böylece farklı hata türleri için farklı yakalama blokları kurabilirsin. Bu, hata yönetimini düzenli ve anlamlı kılar.
Uygulama TaskError sınıfı tanımla
TaskError(message: String) : Exception(message) sınıfını tanımla. fun find(id: Int) yaz; içinde throw TaskError("Görev bulunamadı: $id") fırlat. main içinde find(99) çağır; TaskError yakala ve e.message'i yazdır.
Başlangıç kodu
fun main() {
// Bir hata sınıfı tanımla, bir fonksiyonda fırlat, main'de yakala ve yazdır
}Örnek çözüm
class TaskError(message: String) : Exception(message)
fun find(id: Int) {
throw TaskError("Görev bulunamadı: $id")
}
fun main() {
try {
find(99)
} catch (e: TaskError) {
println(e.message)
}
}Beklenen çıktı
Görev bulunamadı: 99
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Boşluğu doldur: üst sınıf
class TaskError(message: String) : ____(message)
class TaskError(message: String) : Exception(message)
Açıklama: Exception üst sınıf olarak kullanılır.
2 Özel exception neden tanımlanır?
- Daha az bellek için
- Daha az kod yazmak için
- Hız artışı için
- Daha anlamlı hata türleri için Doğru cevap
Açıklama: Uygulamaya özgü hata türleri daha anlamlıdır.
3 Parça ve rol eşleştir
| Kavram | Anlamı |
|---|---|
class TaskError |
Sınıf tanımı |
: Exception |
Üst sınıf |
throw TaskError |
Fırlatma |
catch (e: TaskError) |
Yakalama |