12/04/2026 18:15น.

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() // ปิดไฟล์เมื่อใช้งานเสร็จ
}