Maison > Article > développement back-end > Pouvez-vous paniquer dans le cadre d'une fonction différée lors d'une panique existante à Golang ?
Contexte :
Dans le code fourni :
<code class="go">func sub(){ defer func (){ panic(2) }() panic(1) } func main(){ defer func(){ x:=recover() println(x.(int)); }() sub() }</code>
Il semble que la première panique (panic(1)) soit "écrasée" par la deuxième panique (panic(2)).
Est-ce que Est-ce acceptable ?
À Golang, paniquer suite à une fonction différée ne constitue pas une condition distincte ou exceptionnelle. Cela indique simplement que la séquence de panique persistera.
Comme démontré dans l'exemple de code, il est permis d'appeler une fonction Golang qui pourrait paniquer dans une fonction de report. Même lorsqu'une panique se produit déjà, il est acceptable de paniquer dans le cadre d'une fonction de report.
Mécanisme :
Selon la spécification Go :
"Si D revient normalement, sans déclencher une nouvelle panique, la séquence de panique s'arrête."
Dans l'exemple, la fonction différée (D) revient sans déclencher une nouvelle panique. Par conséquent, la séquence de panique initiée par panic(1) est interrompue.
Considérations supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!