การดู : 0

12/04/2026 18:15น.

EP.9 Go กับ Error Handling & Logging - จัดการข้อผิดพลาดอย่างมือโปร!

EP.9 Go กับ Error Handling & Logging - จัดการข้อผิดพลาดอย่างมือโปร!

#Go

#Error Handling

#Logging

#Custom Errors

#defer

#การพัฒนาแอปพลิเคชัน

#Superdev School

Go กับ Error Handling & Logging - จัดการข้อผิดพลาดอย่างมือโปร!

ข้อผิดพลาดเป็นส่วนหนึ่งของการเขียนโปรแกรม และใน Go เราเน้นการจัดการข้อผิดพลาดอย่างมีประสิทธิภาพ

 

Error Handling ใน Go คืออะไร?
Go ไม่มีการใช้ Exception เหมือนภาษาอื่น แต่เน้นการตรวจสอบข้อผิดพลาดจากการคืนค่า (Return Value) ของฟังก์ชัน ทำให้การจัดการข้อผิดพลาดมีความชัดเจนและควบคุมได้ง่ายกว่า
ตัวอย่างฟังก์ชันคืนค่า Error:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Error:", err)
        return
    }
    fmt.Println("Result:", result)
}

 

สร้าง Custom Errors
เราสามารถสร้างข้อผิดพลาดแบบเฉพาะของเราเองเพื่ออธิบายเหตุการณ์ได้ชัดเจนขึ้น:

var ErrInvalidInput = errors.New("invalid input provided")

func checkInput(input int) error {
    if input < 0 {
        return ErrInvalidInput
    }
    return nil
}

 

Logging ใน Go
การบันทึก Log เป็นส่วนสำคัญสำหรับการตรวจสอบและติดตามข้อผิดพลาดที่เกิดขึ้นในระบบ
ตัวอย่างการใช้ Log:

package main

import (
    "log"
    "os"
)

func main() {
    file, err := os.OpenFile("app.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    log.SetOutput(file)
    log.Println("Application started")
    log.Println("Something happened")
}

 

การใช้ defer กับการจัดการทรัพยากร
คำสั่ง defer ใน Go ช่วยให้เราสามารถปิดไฟล์หรือทรัพยากรอื่นๆ ได้อย่างเหมาะสม แม้จะมีข้อผิดพลาดเกิดขึ้น
ตัวอย่าง:

func main() {
    file, err := os.Open("data.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close() // ปิดไฟล์เมื่อใช้งานเสร็จ
}