Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

واجهة الـ `error`

جزء من قسم Fundamentals في رحلة GO على Coddy — الدرس 103 من 109.

في لغة Go، تعتبر واجهة error نوعاً مدمجاً يمثل حالات الخطأ. أي نوع يقوم بتنفيذ التابع Error() يحقق هذه الواجهة.

إليك تعريف واجهة الخطأ (error interface):

type error interface {
    Error() string
}

إنشاء نوع خطأ مخصص:

type MyError struct {
    Message string
}

func (e MyError) Error() string {
    return e.Message
}

func main() {
    err := MyError{Message: "something went wrong"}
    fmt.Println(err)
}

سيكون الناتج:

something went wrong
challenge icon

التحدي

سهل

في هذا التحدي، ستعمل مع واجهة error في لغة Go. تحتاج إلى إنشاء خطأ مخصص باستخدام دالة errors.New() ثم التحقق مما إذا كان هناك خطأ موجود.

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

ورقة مرجعية

واجهة error هي نوع مدمج يمثل حالات الخطأ. أي نوع يقوم بتنفيذ التابع Error() يحقق هذه الواجهة:

type error interface {
    Error() string
}

إنشاء نوع خطأ مخصص:

type MyError struct {
    Message string
}

func (e MyError) Error() string {
    return e.Message
}

func main() {
    err := MyError{Message: "something went wrong"}
    fmt.Println(err) // المخرجات: something went wrong
}

استخدم errors.New() لإنشاء أخطاء بسيطة والتحقق مما إذا كان الخطأ ليس nil.

جرّب بنفسك

package main

import (
	"errors"
	"fmt"
)

func main() {
	// هذه الدالة تعيد خطأ
	err := generateError()
	
	// TODO: تحقق مما إذا كان err ليس nil
	// إذا كان err ليس nil، اطبع: "Error occurred: " متبوعاً برسالة الخطأ
	// تلميح: استخدم جملة if للتحقق مما إذا كان err != nil
	
	
	// سيتم تنفيذ هذا السطر فقط في حال عدم حدوث خطأ
	fmt.Println("Program completed successfully")
}

// هذه الدالة تولد خطأ
func generateError() error {
	return errors.New("something went wrong")
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Fundamentals