Bagaimanakah Pulangan Dinamakan dan Pulangan Normal Berbeza dalam Mengendalikan Panik?

Linda Hamilton
Lepaskan: 2024-11-20 11:50:10
asal
264 orang telah melayarinya

How Do Named and Normal Returns in Go Differ in Handling Panics?

Named Returns Unmask Panic Consealed by Normal Returns

Dalam Go, perbezaan antara pulangan biasa dan dinamakan terletak di luar kebolehbacaan. Pemulangan bernama membenarkan pengubahsuaian untuk mengembalikan nilai, menjejaskan hasil sekiranya berlaku panik.

Masalah

Pertimbangkan kod berikut:

import (
    "fmt"
    "log"
)

func catch(err *error) {
    if r := recover(); r != nil {
        *err = fmt.Errorf("recovered panic: %v", r)
    }
}

func panicIf42(n int) {
    if n == 42 {
        panic("42!")
    }
}

func NormalReturns(n int) error {
    var err error
    defer catch(&err)
    panicIf42(n)
    return err
}

func NamedReturns(n int) (err error) {
    defer catch(&err)
    panicIf42(n)
    return
}

func main() {
    err := NamedReturns(42)
    log.Printf("NamedReturns error: %v", err)
    err = NormalReturns(42)
    log.Printf("NormalReturns error: %v", err)
}
Salin selepas log masuk

Tanpa diduga, NormalReturns tidak dikembalikan, manakala NamedReturns mengembalikan ralat. Bagaimanakah tingkah laku ini boleh dijelaskan?

Penjelasan

Dalam NormalReturns, nilai pulangan dimulakan kepada sifar (nilai sifar ralat). Memandangkan panik dalam panicIf42() menghalang penyataan pulangan daripada dicapai, pembolehubah hasil kekal ditetapkan kepada sifar.

Sebaliknya, NamedReturns mengisytiharkan pembolehubah pulangan bernama ralat. Apabila panik, fungsi tangkapan tertunda() mengubah suai pembolehubah ini. Nilai hasil yang dinamakan dipelihara dan dikembalikan, walaupun penyataan pemulangan tidak dilaksanakan.

Ciri Pemulangan Dinamakan

  • Pemulangan bernama membenarkan akses dan pengubahsuaian nilai hasil dalam fungsi tertunda.
  • Jika penyataan pemulangan tidak dicapai kerana panik, nilai pemulangan yang dinamakan masih boleh dikemas kini dan dikembalikan.
  • Tingkah laku ini membolehkan pengembalian nilai bukan sifar walaupun dalam keadaan panik .

Kesimpulan

Pulangan bernama memberikan lebih fleksibiliti dan kawalan ke atas nilai pulangan. Mereka membolehkan pengubahsuaian nilai pulangan oleh fungsi tertunda dan memastikan nilai yang ditentukan dikembalikan walaupun sekiranya berlaku panik. Dengan memahami nuansa ini, pembangun boleh menggunakan pulangan dinamakan dengan berkesan untuk mengendalikan kes luar biasa dan menyampaikan keadaan ralat dengan tepat.

Atas ialah kandungan terperinci Bagaimanakah Pulangan Dinamakan dan Pulangan Normal Berbeza dalam Mengendalikan Panik?. 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