English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Golang تعليمات أساسية

Golang تعليمات التحكم

Golang دالة & طريقة

Golang بنية

Golang قطع & أعدادات

Golang 字رينغ (String)

Golang إشارات

Golang واجهات

Golang تعاون

Golang استثناء (Error)

Golang أخرى

Panic بلغة Go

Panic هو آلية نستخدمها لمعالجة حالات الخطأ. يمكن استخدام الحالات الطارئة لإيقاف تنفيذ الدالة. عند استدعاء الدالة panic، تتوقف عملية التنفيذ، وتنقل السيطرة إلى الدالة المتأخرة ذات الصلة.

المدعو للدالة سيتم إنهاء أيضًا، وسيعمل الدالة المتأخرة للمدعو (إذا كانت موجودة). سيستمر هذا العمل حتى انتهاء البرنامج. الآن يتم الإبلاغ عن حالة الخطأ.

يُسمى هذا التسلسل التوقف بالpanic، ويمكن التحكم فيه بواسطة دالة مدمجة recover.}

مثال الهلع 1:

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

مثال الهلع 2

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.