CodeBlanks Logo Icon CodeBlanks

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

main.go
package main

import "fmt"

func main() {
    // buraya yaz
}

Örnek çözüm

main.go
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

Soru
f, ____ := sym.(func() string)
if !ok { return }
Cevap
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

İleri seviye bölümündeki tüm dersler