Golang Gjenopprett

Golang Gjenopprett
Golang Gjenopprettingsfunksjonen brukes til å gjenopprette en goroutine fra panikk. Tenk på det som en prøve/fangstblokk i andre programmeringsspråk. Vi kan bruke gjenopprettingsmetoden for å gjenopprette programmet fra en feil som er reist ved en panikkmetode. Dette hjelper oss å grasiøst håndtere feil i tilfelle feil i stedet for å avslutte programmet.

La oss utforske hvordan vi kan bruke gjenopprettingsmetoden for å gjenopprette et program fra panikk.

Golang Gjenopprette metode

Gjenopprettingsmetoden er en innebygd metode som er definert i GO innebygd pakke. Funksjonssyntaksen er som vist:

FUNC Recover () grensesnitt

For å implementere gjenopprettingsfunksjonen på riktig måte, må følgende forhold være oppfylt:

  1. Kall alltid gjenopprettingsfunksjonen i en utsatt funksjon. Dette er fordi utsatte metoder ikke avsluttes i tilfelle panikk. Dette gjør dem i stand til å gjenopprette programmet når en panikk oppstår. Sjekk opplæringen vår om Golang Panic for å lære mer.
  2. Gjenopprettingsmetoden OS er bare aktuelt i en goroutine som møter panikk. Hvis du blir kalt i en goroutine som ikke opplever panikken, fungerer ikke gjenoppretting.

Eksempel 1

Eksemplet nedenfor illustrerer hvordan du bruker gjenopprettingsmetoden.

pakkehoved
Importer "FMT"
func panic_me ()
Panikk ("bortkastet!")

func main ()
utsette func ()
hvis rec: = gjenopprette (); rec != nil
fmt.Println ("Whew!, Jeg er frelst ")

()
Panic_me ()
fmt.Println ("Jeg kan ikke løpe")

I eksemplet over lager vi en funksjon som panikk. Inne i hovedfunksjonen lager vi en utsatt funksjon som prøver å gjenopprette programmet. Hvis utvinningen er suksess, skriver den ut en melding i IF -blokken.

Hvis vi kjører programmet over, bør vi få en utdata som vist:

$ gå løp gjenopprette.gå
Whew!, Jeg er frelst

Merk at meldingen i hovedblokken ikke utføres. Dette er fordi hovedfunksjonen blir ødelagt umiddelbart etter panikken. Bare den utsatte metoden kan kjøres etter panikk.

Eksempel 2

Eksemplet nedenfor illustrerer også hvordan du kan gjenopprette et program fra en utenom bundet indeks.

pakkehoved
import (
"FMT"
"Runtime/Debug"
)
func dontPanic ()
hvis rec: = gjenopprette (); rec != nil
fmt.Println ("Jeg døde nesten")

feilsøking.PrintStack ()

func getValue (skive [] int, indeks int)
if index> (len (skive) - 1)
Panikk ("Ulovlig indekstilgang!")

fmt.Println (skive [indeks])

func main ()
SLC: = [] int 1, 2, 3
utsett ikke panisk ()
GetValue (SLC, 5)

I eksemplet over lager vi en funksjon som håndterer panikken ved hjelp av gjenopprettingsmetoden og skriver ut stabelsporet ved hjelp av feilsøking.PrintStack () Metode.

Nå, hvis du prøver å få tilgang til et element med en ut av bundet indeks, håndterer Gjenopprettingsmetoden panikken.

Koden over skal returnere en feil som:

Jeg døde nesten
Goroutine 1 [Løping]:
Runtime/Debug.Stable()
C:/Programfiler/GO/SRC/Runtime/Debug/Stack.GO: 24 +0x65
Runtime/Debug.PrintStack ()
C:/Programfiler/GO/SRC/Runtime/Debug/Stack.GO: 16 +0x19
hoved-.ikke få panikk()
gjenopprette.GO: 15 +0x6a
Panic (0xa54b20, 0xa861b8)
C:/Programfiler/GO/SRC/Runtime/Panic.GO: 1038 +0x215
hoved-.getValue (0xc0000cdf50, 0xc0000cdf70, 0x9c52b9, 0x60)
gjenopprette.GO: 19 +0x98
hoved-.hoved()
gjenopprette.GO: 33 +0x7E

Ovennevnte representerer stakksporet som programmet panikk.

Konklusjon

I denne artikkelen dekker vi hvordan du kan gjenopprette et program fra en panikk ved hjelp av gjenopprettingsmetoden. Vi lærte også hvordan du får stakkesporet hvis et program får panikk ved å bruke feilsøkingen.Panic () -metode.