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

دليل أساسي لـ Golang

جمل التحكم في Golang

الوظائف & الطرق في Golang

البنيات في Golang

القطع & Arrays في Golang

النصوص (String) في Golang

مؤشرات Golang

واجهات Golang

المساعي المتوازية في Golang

أخطاء Golang

متنوعات Golang

الخطأ (Error) بلغة Go

لا يحتوي Go على آلية استثناء مثل try / catch في Java، ولا يمكننا رمي استثناءات في Go.

يستخدم Go آلية أخرى تُدعىآلية التأخير والإصابة والاستعادة

يتعامل Go مع الأخطاء البسيطة عن طريق العودة إلى دالة أو طريقة واحدة باستخدام علامة النهاية الأخيرة. قد يكون الجسم المكون من أخطاء هو أو هو أو الأخير. إذا لم يكن هناك خطأ، فإن جسم الخطأ يكون nil.

يجب أن نتحقق من وجود خطأ دائمًا في جملة الدعوة.

لا يجب أبدًا تجاهل الأخطاء، لأنها قد تؤدي إلى انهيار البرنامج.

يستخدم Go طريقة لتحديد ومراسلة حالات الأخطاء

  • ستعيد الدوال التي يمكن أن تنشأ خطأ اثنين من المتغيرات: قيمة واحدة وكود خطأ، إذا كانت النتيجة ناجحة، فإن الخطأ يكون nil؛ وإذا كانت هناك حالة خطأ، فإن الخطأ يكون == nil.

  • تُحقق من وجود خطأ بعد دعوة الدالة. إذا حدث خطأ (if error != nil)، توقف عن تنفيذ الوظيفة الفعلية (أو كامل البرنامج إذا لزم الأمر).

يحتوي Go على نوع واجهة أخطاء مسبقًا

type error interface {
    Error() string
}	

يمكننا استخدام حزمة الأخطاء لتحديد نوع الخطأ وتقديم رسالة خطأ مناسبة، مثل:

err := errors.New("math - سقوط عدد سالب")

مثال خطأ

package main
import "errors"
import "fmt"
import "math"
func Sqrt(value float64) (float64, error) {
   if (value < 0) {
      return 0, errors.New("Math: سقوط عدد سالب")
   }
   return math.Sqrt(value), nil
}
func main() {
   result, err := Sqrt(-64)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println(result)
   }
   result, err = Sqrt(64)
   if err != nil {
      fmt.Println(err)
   } else {
      fmt.Println(result)
   }
}

الناتج:

الرياضيات: الجذر التربيعية السالب
8