error interface
- Go kursu
- Başlangıç
- Ders 83/90
- 4 dk
error interface'ini ve Error() metodunu öğrenirsin.
error interface
Go'da hata, yerleşik error interface'ini karşılayan herhangi bir değerdir:
type error interface {
Error() string
}Fonksiyonlar hatayı son dönüş değeri olarak verir; başarıda nil döner. Hatalar istisna (exception) değil, sıradan değerlerdir; if err != nil ile kontrol edilir.
f, err := os.Open("ayar.json")
if err != nil {
return err
}
defer f.Close()Özel hata türü
Ek bilgi taşıyan hata türleri, çağıranın hatayı daha iyi ele almasını sağlar:
type DogrulamaHatasi struct {
Alan string
Neden string
}
func (e *DogrulamaHatasi) Error() string {
return e.Alan + ": " + e.Neden
}
func dogrula(yas int) error {
if yas < 0 {
return &DogrulamaHatasi{"yaş", "negatif olamaz"}
}
return nil
}Uygulama Doğrulama hatası
Yukarıdaki DogrulamaHatasi türünü ve dogrula(yas int) error fonksiyonunu yaz. dogrula(-3) ve dogrula(20) sonuçlarını ayrı satırlarda yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
type DogrulamaHatasi struct {
Alan string
Neden string
}
func (e *DogrulamaHatasi) Error() string {
return e.Alan + ": " + e.Neden
}
func dogrula(yas int) error {
if yas < 0 {
return &DogrulamaHatasi{"yaş", "negatif olamaz"}
}
return nil
}
func main() {
fmt.Println(dogrula(-3))
fmt.Println(dogrula(20))
}Beklenen çıktı
yaş: negatif olamaz <nil>
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kendi hata türünü yazmak için ne gerekir?
- panic çağırmak
- errors paketine kayıt
- Error() string yöntemi olan bir tür Doğru cevap
- error'dan kalıtım
Açıklama: Örtük karşılama burada da geçerlidir; Error() string yöntemi olan her tür error'dır.
2 Hata yöntemi
func (e *DogrulamaHatasi) ____() string {
return e.Alan + ": " + e.Neden
}
func (e *DogrulamaHatasi) Error() string {
return e.Alan + ": " + e.Neden
}
Açıklama: Error() string yöntemi türü error interface'ini karşılar hâle getirir.
3 Kavram
| Kavram | Anlamı |
|---|---|
error |
Error() string |
nil hata |
Başarı |
if err != nil |
Hata kontrolü |
*DogrulamaHatasi |
Özel hata türü |