12/04/2026 18:15น.

JS2GO EP.10 Error Handling: JavaScript กับ Go ต่างกันอย่างไร?
#ความแตกต่างของ Go และ JavaScript
#JavaScript กับ Go
#Error Handling
#Go
#JavaScript
การจัดการข้อผิดพลาด (Error Handling) เป็นส่วนสำคัญในการพัฒนาโปรแกรม เพื่อให้สามารถจัดการกับข้อผิดพลาดที่เกิดขึ้นระหว่างการทำงานของโปรแกรมได้อย่างมีประสิทธิภาพ JavaScript และ Go ต่างมีวิธีการจัดการข้อผิดพลาดที่แตกต่างกัน ซึ่งทั้งสองภาษามีแนวทางที่เหมาะสมกับประเภทการพัฒนาโปรเจกต์ที่ต่างกัน ในบทความนี้เราจะมาทำความเข้าใจถึง Error Handling ในทั้ง JavaScript และ Go และเปรียบเทียบวิธีการจัดการข้อผิดพลาดในทั้งสองภาษา
Error Handling ใน JavaScript
การจัดการข้อผิดพลาดด้วย try-catch:
ใน JavaScript, วิธีที่ใช้บ่อยที่สุดในการจัดการข้อผิดพลาดคือการใช้ try-catch block ซึ่งช่วยให้สามารถจับข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการทำงานของโปรแกรมได้
ตัวอย่างการใช้งาน try-catch:
try {
let result = someFunction();
} catch (error) {
console.error("Error:", error.message);
}
คำอธิบาย:
- ใน JavaScript, เราจะใช้
tryเพื่อบรรจุโค้ดที่อาจเกิดข้อผิดพลาด และใช้catchเพื่อจับข้อผิดพลาดและจัดการกับมัน ซึ่งจะช่วยให้โปรแกรมทำงานต่อไปได้โดยไม่หยุด
การใช้ Error Object:
ใน JavaScript, เมื่อเกิดข้อผิดพลาด ระบบจะส่ง Error Object ซึ่งประกอบด้วยข้อความแสดงข้อผิดพลาดและรายละเอียดเพิ่มเติมเกี่ยวกับข้อผิดพลาดนั้น
ตัวอย่างการใช้ Error Object:
try {
throw new Error("Something went wrong");
} catch (error) {
console.error(error.name); // Error
console.error(error.message); // Something went wrong
}
คำอธิบาย:
- ใน JavaScript, Error Object จะให้ข้อมูลที่มีรายละเอียดเกี่ยวกับข้อผิดพลาด เช่น name และ message ซึ่งสามารถใช้ในการ debug ข้อผิดพลาดได้
Error Handling ใน Go
การจัดการข้อผิดพลาดด้วย if err != nil:
ใน Go, การจัดการข้อผิดพลาดเป็นสิ่งที่ทำได้ง่ายและชัดเจน โดยฟังก์ชันที่อาจเกิดข้อผิดพลาดจะคืนค่า error ซึ่งจะต้องถูกตรวจสอบทุกครั้ง
ตัวอย่างการใช้งาน error checking:
result, err := someFunction()
if err != nil {
fmt.Println("Error:", err)
return
}
คำอธิบาย:
- ใน Go, ทุกฟังก์ชันที่สามารถเกิดข้อผิดพลาดได้จะคืนค่าพร้อมกับค่า error ซึ่งเราต้องตรวจสอบโดยใช้
if err != nilเพื่อดูว่ามีข้อผิดพลาดหรือไม่ หากมีข้อผิดพลาด ก็จะสามารถจัดการได้อย่างเหมาะสม
การใช้งาน Error Object:
ใน Go, error เป็นชนิดข้อมูล (type) พื้นฐานที่สามารถใช้ได้เหมือนกับ string หรือ int โดยไม่ต้องสร้าง Error Object ใหม่เหมือนใน JavaScript
ตัวอย่างการใช้งาน error object ใน Go:
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("cannot divide by zero")
}
return a / b, nil
}
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
}
คำอธิบาย:
- ใน Go, ฟังก์ชันสามารถคืนค่าพร้อมกับ error ที่เกิดขึ้น และหากไม่มีข้อผิดพลาดก็จะคืนค่า nil ซึ่งทำให้สามารถตรวจสอบและจัดการข้อผิดพลาดได้ชัดเจน
ข้อดีข้อเสียของการจัดการข้อผิดพลาดใน JavaScript และ Go
JavaScript:
- ข้อดี:
- การใช้ try-catch ช่วยให้สามารถจับข้อผิดพลาดและจัดการได้ง่าย
- Error Object ให้ข้อมูลที่ละเอียดเกี่ยวกับข้อผิดพลาด
- สามารถจัดการข้อผิดพลาดในโค้ดที่อาจเกิดขึ้นจากฟังก์ชันหลาย ๆ ฟังก์ชันได้
- ข้อเสีย:
- การจัดการข้อผิดพลาดใน JavaScript อาจทำให้โค้ดดูซับซ้อนเมื่อมีข้อผิดพลาดหลายจุด
- try-catch อาจไม่เหมาะกับการจัดการข้อผิดพลาดในบางกรณี เนื่องจากจะทำให้โปรแกรมทำงานช้าลง
Go:
- ข้อดี:
- การจัดการข้อผิดพลาดใน Go ชัดเจนและง่ายต่อการตรวจสอบ
- การใช้ if err != nil ทำให้โปรแกรมสามารถจัดการข้อผิดพลาดในทุกขั้นตอนการทำงานได้
- ทำให้โค้ดมีความปลอดภัยและสามารถตรวจจับข้อผิดพลาดได้ตั้งแต่ต้น
- ข้อเสีย:
- การที่ต้องตรวจสอบข้อผิดพลาดทุกครั้งที่ฟังก์ชันคืนค่าจะทำให้โค้ดดูยาวและซับซ้อน
- การจัดการข้อผิดพลาดใน Go อาจทำให้เกิดข้อผิดพลาดที่มองข้ามไปหากไม่ตรวจสอบอย่างรอบคอบ
สรุปและข้อแนะนำ:
- JavaScript: ใช้ try-catch ในการจัดการข้อผิดพลาด ซึ่งเหมาะสำหรับการจัดการข้อผิดพลาดที่ไม่คาดคิดหรือข้อผิดพลาดที่อาจเกิดขึ้นในระหว่างการทำงาน
- Go: ใช้การตรวจสอบข้อผิดพลาดด้วย if err != nil ซึ่งเหมาะสำหรับการตรวจสอบข้อผิดพลาดในทุกฟังก์ชันและช่วยให้โค้ดมีความปลอดภัย
หากคุณต้องการเขียนโปรแกรมที่จัดการข้อผิดพลาดได้อย่างชัดเจนและมีประสิทธิภาพ Go เป็นตัวเลือกที่ดี แต่หากคุณต้องการความสะดวกและไม่ยุ่งยากในการจัดการข้อผิดพลาด JavaScript ก็เป็นทางเลือกที่เหมาะสม
หากคุณต้องการเรียนรู้วิธีการจัดการ Error Handling ใน JavaScript และ Go อย่างละเอียด Superdev School พร้อมที่จะช่วยเสริมทักษะการพัฒนาโปรแกรมของคุณ! สมัครเรียนกับเราเลย!
ตอนต่อไป:
ในตอนถัดไปของซีรีส์ JS2GO เราจะพาคุณไปทำความรู้จักกับ Concurrency: การทำงานแบบพร้อมกันใน Go กับ JavaScript ซึ่งจะเปรียบเทียบวิธีการทำงานแบบพร้อมกันในทั้งสองภาษา เพื่อให้คุณเข้าใจวิธีการจัดการกระบวนการที่ทำงานพร้อมกัน
อ่านบทความ Golang The Series: Golang The Series
อ่านบทความ JS2GO: JS2GO
🔵 Facebook: Superdev School (Superdev)
📸 Instagram: superdevschool
🎬 TikTok: superdevschool
🌐 Website: www.superdev.school