Plugin ve hata
- Go kursu
- İleri seviye
- Ders 23/68
- 4 dk
Plugin yükleme hatalarını yönetmeyi öğrenirsin.
Plugin hataları
Üç yerde hata çıkar: Open (dosya yok, sürüm uyumsuz), Lookup (sembol yok) ve tür iddiası (tür farklı). Tür iddiasında tek değerli biçim panic üretir; iki değerli biçim güvenlidir:
f, ok := sym.(func(string) string)
if !ok {
return errors.New("Selam beklenen türde değil")
}Hataları sarmalamak
Hangi plugin'in ve hangi adımın bozulduğunu anlamak için hataları bağlamla sar:
p, err := plugin.Open(yol)
if err != nil {
return fmt.Errorf("plugin %s açılamadı: %w", yol, err)
}%w asıl hatayı korur; errors.Is ile yine sorgulanabilir.
Uygulama Güvenli iddia yaz
var sym any = 42 tanımla. f, ok := sym.(func() string) ile iddia yap; ok false ise fmt.Println("tür uyumsuz") yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
func main() {
var sym any = 42
f, ok := sym.(func() string)
if !ok {
fmt.Println("tür uyumsuz")
return
}
fmt.Println(f())
}Beklenen çıktı
tür uyumsuz
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Tür iddiası başarısız olursa <code>f := sym.(func())</code> ne yapar?
- false döner
- Derleme hatası verir
- panic üretir Doğru cevap
- f nil olur
Açıklama: Tek değerli tür iddiası uyuşmazlıkta panic üretir; ", ok" biçimi panic yerine ok=false verir.
2 Güvenli iddia
f, ____ := sym.(func() string)
if !ok { return }
f, ok := sym.(func() string)
if !ok { return }
Açıklama: İki değerli tür iddiasında ikinci değer başarıyı bildiren bool'dur.
3 Hata kaynağı
| Kavram | Anlamı |
|---|---|
Dosya yok |
plugin.Open |
Sembol yok |
Lookup |
Yanlış tür |
Tür iddiası |
Bağlam eklemek |
fmt.Errorf ve %w |