English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Panic هو آلية نستخدمها لمعالجة حالات الخطأ. يمكن استخدام الحالات الطارئة لإيقاف تنفيذ الدالة. عند استدعاء الدالة panic، تتوقف عملية التنفيذ، وتنقل السيطرة إلى الدالة المتأخرة ذات الصلة.
المدعو للدالة سيتم إنهاء أيضًا، وسيعمل الدالة المتأخرة للمدعو (إذا كانت موجودة). سيستمر هذا العمل حتى انتهاء البرنامج. الآن يتم الإبلاغ عن حالة الخطأ.
يُسمى هذا التسلسل التوقف بالpanic، ويمكن التحكم فيه بواسطة دالة مدمجة recover.}
package main import "os" func main() { panic("حالة خطأ") _، err := os.Open("/tmp/file") إذا err != nil { panic(err) } }
الناتج:
panic: حالة خطأ goroutine 1 [running]: main.main() /Users/pro/GoglandProjects/Panic/panic example1.go:6 +0x39
package main import "fmt" func main() { fmt.Println("تتم الاتصال بـ x من المفترض.") x() fmt.Println("مستعيد من x.") } func x() { defer func() { إذا r := recover(); r != nil { fmt.Println("مستعيد في x", r) } }() fmt.Println("يتم تنفيذ x...") fmt.Println("تتم الاتصال بـ y.") y(0) fmt.Println("مستعيد بشكل طبيعي من y.") } func y(i int) { fmt.Println("يتم تنفيذ y....") إذا i > 2 { fmt.Println("يبدأ الهلع!") panic(fmt.Sprintf("%v", i)) } defer fmt.Println("إرجاء في y", i) fmt.Println("طباعة في y", i) y(i + 1) }
الناتج:
تتم الاتصال بـ x من المفترض. يتم تنفيذ x... تتم الاتصال بـ y. يتم تنفيذ y.... يتم الطباعة في y 0 يتم تنفيذ y.... يتم الطباعة في y 1 يتم تنفيذ y.... يتم الطباعة في y 2 يتم تنفيذ y.... يبدأ الهلع! إرجاء في y 2 إرجاء في y 1 إرجاء في y 0 مستعيد في x 3 مسترد من x.