Bila dan Mengapa Gunakan `err.(*os.PathError)` dalam Go?

Barbara Streisand
Lepaskan: 2024-11-04 10:03:02
asal
564 orang telah melayarinya

When and Why Use `err.(*os.PathError)` in Go?

Memahami ralat.(*os.PathError) dalam Go

Dokumentasi In Go tentang pengendalian ralat yang berkesan (https://golang.org/doc/effective_go.html #errors), anda mungkin pernah menemui coretan kod:

<code class="go">for try := 0; try < 2; try++ {
    file, err = os.Create(filename)
    if err == nil {
        return
    }
    if e, ok := err.(*os.PathError); ok && e.Err == syscall.ENOSPC {
        deleteTempFiles()  // Recover some space.
        continue
    }
    return
}</code>
Salin selepas log masuk

Kod ini menunjukkan penggunaan err.(*os.PathError). Mari kita mendalami maksudnya.

Apa itu err.(*os.PathError)?

Apabila os.Create dipanggil, ia mengembalikan ralat sebagai nilai pulangan kedua. Ralat ini melaksanakan antara muka ralat { Error() string }. Mana-mana jenis data yang mempunyai kaedah Ralat boleh melaksanakan antara muka ini dan ditugaskan kepadanya.

Biasanya, hanya mengeluarkan mesej ralat sudah memadai. Walau bagaimanapun, dalam contoh yang diberikan, program ini bertujuan untuk mengendalikan ralat ENOSPC (tiada ruang tersisa pada peranti) secara khusus. Pakej os menyediakan *os.PathError sebagai pelaksanaan ralat dalam kes sedemikian. Jika anda perlu mengakses maklumat lanjut tentang ralat, anda boleh menghantarnya.

Jenis Penegasan: e, ok := err.(*os.PathError)

Pernyataan e, ok : = err.(os.PathError) menggunakan penegasan jenis. Ia mengesahkan jika nilai antara muka ralat memegang os.PathError sebagai jenis konkritnya dan jika ya, ia mengembalikan nilai tersebut. Jika jenis berbeza terdapat dalam antara muka (jenis lain juga mungkin melaksanakan antara muka ralat), ia hanya mengembalikan nilai sifar dan palsu (tiada, palsu dalam kes ini).

Atas ialah kandungan terperinci Bila dan Mengapa Gunakan `err.(*os.PathError)` dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!