على الرغم من أن رسائل الخطأ قد لا تكون الشيء الأكثر إغراءً أو تحفيزًا لرؤيته في التطوير، إلا أنها تلعب دورًا حاسمًا في المساعدة على تحديد مسار العمل التالي، والأهم من ذلك، منع البرامج من الإنهاء المبكر.
في هذا البرنامج التعليمي، سنرشدك خلال عملية طباعة رسائل الخطأ في Go.
باستخدام Error.New()
قبل أن نبدأ في تعلم كيفية إنشاء الأخطاء المخصصة واستخدامها في Go، دعونا نفهم أساسيات معالجة الأخطاء في Golang.
يعرض Go أخطاء باستخدام واجهة الخطأ. تحتوي واجهة الخطأ على طريقة واحدة تسمى سلسلة Error(). أي نوع يطبق هذه الطريقة يسمح لـ Go بالتعامل معها على أنها خطأ.
هنا، ألق نظرة على رمز المثال التالي:
الحزمة الرئيسية
يستورد (
'أخطاء'
'إف إم تي'
)
تقسيم الوظيفة ( أ، ب كثافة العمليات ) ( في الارهاب ) {
لو ب == 0 {
يعود 0 ، أخطاء.جديد ( 'القسمة على صفر' )
}
يعود أ / ب، لا شيء
}
func الرئيسي ( ) {
النتيجة، خطأ := تقسيم ( 10 , 0 )
لو يخطئ ! = لا شيء {
fmt.Println ( 'خطأ:' ، خطأ )
يعود
}
fmt.Println ( 'نتيجة:' ، نتيجة )
}
في المثال الموضح، نستخدم الدالة error.New() التي تتيح لنا إنشاء خطأ جديد برسالة وصفية عندما نحاول القسمة على صفر.
العمل مع أخطاء متعددة
في موقف معقد، قد يواجه التطبيق أخطاء متعددة مرتبطة. الأسلوب الشائع هو تجميع الأخطاء وإعادتها كوحدة واحدة.
في Go، يمكننا تحقيق ذلك باستخدام الدالة fmt.Errorf() كما هو موضح في المثال التالي:
الحزمة الرئيسيةيستورد (
'إف إم تي'
)
عملية وظيفية1 ( ) خطأ {
يعود fmt.خطأ ( 'أخطأ في 1' )
}
عملية func2 ( ) خطأ {
يعود fmt.خطأ ( 'أخطأ في 2' )
}
func الرئيسي ( ) {
err1 := العملية1 ( )
err2 := العملية2 ( )
لو خطأ1 ! = لا شيء || err2 ! = لا شيء {
خطأ := fmt.Errorf ( 'أخطاء متعددة: \ن - ٪في \ن - ٪في' ، يخطئ 1، يخطئ 2 )
fmt.Println ( 'خطأ:' ، خطأ )
يعود
}
fmt.Println ( 'لا أخطاء.' )
}
في هذا المثال، نستخدم عمليات الوظائف الأساسية لمحاكاة المهام التي قد ترجع الأخطاء. نستخدم بعد ذلك الدالة fmt.Errorf() لدمجها في رسائل خطأ واحدة.
راجع برنامجنا التعليمي في التفاف الأخطاء Go لمعرفة المزيد حول كيفية إضافة معلومات السياق إلى رسائل الخطأ.
خاتمة
في هذا البرنامج التعليمي، تعلمنا كيفية التعامل مع طباعة الأخطاء في Go باستخدام الوظيفة الجديدة ووظيفة 'Errorf' لدمج الأخطاء المتعددة.