[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-th-1-1-all-go-error-handling-logging-all--*":3,"academy-blog-translations-5sadmm5cq63xrku":89},{"data":4,"page":77,"perPage":77,"totalItems":77,"totalPages":77},[5],{"alt":6,"collectionId":7,"collectionName":8,"content":9,"cover_image":10,"cover_image_path":11,"created":12,"created_by":13,"expand":14,"id":83,"keywords":84,"locale":59,"published_at":85,"scheduled_at":13,"school_blog":81,"short_description":86,"slug":87,"status":79,"title":6,"updated":88,"updated_by":13,"views":82},"EP.9 Go กับ Error Handling & Logging - จัดการข้อผิดพลาดอย่างมือโปร!","sclblg987654321","school_blog_translations","\u003Cp>\u003Cspan style=\"font-size:20px;\">\u003Cstrong>Go กับ Error Handling &amp; Logging - จัดการข้อผิดพลาดอย่างมือโปร!\u003C\u002Fstrong>\u003C\u002Fspan>\u003C\u002Fp>\u003Cp>ข้อผิดพลาดเป็นส่วนหนึ่งของการเขียนโปรแกรม และใน Go เราเน้นการจัดการข้อผิดพลาดอย่างมีประสิทธิภาพ\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size:18px;\">\u003Cstrong>Error Handling ใน Go คืออะไร?\u003C\u002Fstrong>\u003C\u002Fspan>\u003Cbr>Go ไม่มีการใช้ Exception เหมือนภาษาอื่น แต่เน้นการตรวจสอบข้อผิดพลาดจากการคืนค่า (Return Value) ของฟังก์ชัน ทำให้การจัดการข้อผิดพลาดมีความชัดเจนและควบคุมได้ง่ายกว่า\u003Cbr>ตัวอย่างฟังก์ชันคืนค่า Error:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">package main\r\n\r\nimport (\r\n    \"errors\"\r\n    \"fmt\"\r\n)\r\n\r\nfunc divide(a, b int) (int, error) {\r\n    if b == 0 {\r\n        return 0, errors.New(\"cannot divide by zero\")\r\n    }\r\n    return a \u002F b, nil\r\n}\r\n\r\nfunc main() {\r\n    result, err := divide(10, 0)\r\n    if err != nil {\r\n        fmt.Println(\"Error:\", err)\r\n        return\r\n    }\r\n    fmt.Println(\"Result:\", result)\r\n}\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size:18px;\">\u003Cstrong>สร้าง Custom Errors\u003C\u002Fstrong>\u003C\u002Fspan>\u003Cbr>เราสามารถสร้างข้อผิดพลาดแบบเฉพาะของเราเองเพื่ออธิบายเหตุการณ์ได้ชัดเจนขึ้น:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">var ErrInvalidInput = errors.New(\"invalid input provided\")\r\n\r\nfunc checkInput(input int) error {\r\n    if input &lt; 0 {\r\n        return ErrInvalidInput\r\n    }\r\n    return nil\r\n}\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size:18px;\">\u003Cstrong>Logging ใน Go\u003C\u002Fstrong>\u003C\u002Fspan>\u003Cbr>การบันทึก Log เป็นส่วนสำคัญสำหรับการตรวจสอบและติดตามข้อผิดพลาดที่เกิดขึ้นในระบบ\u003Cbr>ตัวอย่างการใช้ Log:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">package main\r\n\r\nimport (\r\n    \"log\"\r\n    \"os\"\r\n)\r\n\r\nfunc main() {\r\n    file, err := os.OpenFile(\"app.log\", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)\r\n    if err != nil {\r\n        log.Fatal(err)\r\n    }\r\n    defer file.Close()\r\n\r\n    log.SetOutput(file)\r\n    log.Println(\"Application started\")\r\n    log.Println(\"Something happened\")\r\n}\r\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size:18px;\">\u003Cstrong>การใช้ defer กับการจัดการทรัพยากร\u003C\u002Fstrong>\u003C\u002Fspan>\u003Cbr>คำสั่ง defer ใน Go ช่วยให้เราสามารถปิดไฟล์หรือทรัพยากรอื่นๆ ได้อย่างเหมาะสม แม้จะมีข้อผิดพลาดเกิดขึ้น\u003Cbr>ตัวอย่าง:\u003C\u002Fp>\u003Cpre>\u003Ccode class=\"language-plaintext\">func main() {\r\n    file, err := os.Open(\"data.txt\")\r\n    if err != nil {\r\n        log.Fatal(err)\r\n    }\r\n    defer file.Close() \u002F\u002F ปิดไฟล์เมื่อใช้งานเสร็จ\r\n}\r\u003C\u002Fcode>\u003C\u002Fpre>","17_11zon_1fj865i5wb.webp","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002F1hkpcxhr5zlsw5l\u002F17_11zon_1fj865i5wb.webp","2026-03-04 08:33:58.152Z","",{"keywords":15,"locale":53,"school_blog":63},[16,23,28,33,38,43,48],{"collectionId":17,"collectionName":18,"created":19,"created_by":13,"id":20,"name":21,"updated":22,"updated_by":13},"sclkey987654321","school_keywords","2026-03-04 08:20:11.547Z","ey3puyme01a9bsw","Go","2026-04-10 16:07:25.893Z",{"collectionId":17,"collectionName":18,"created":24,"created_by":13,"id":25,"name":26,"updated":27,"updated_by":13},"2026-03-04 08:24:43.639Z","mjcndls2y3h9ob6","Error Handling","2026-04-10 16:07:29.897Z",{"collectionId":17,"collectionName":18,"created":29,"created_by":13,"id":30,"name":31,"updated":32,"updated_by":13},"2026-03-04 08:33:55.302Z","0mue4zt83jcdtq9","Logging","2026-04-10 16:08:03.396Z",{"collectionId":17,"collectionName":18,"created":34,"created_by":13,"id":35,"name":36,"updated":37,"updated_by":13},"2026-03-04 08:33:56.535Z","al93g9aawgs6nbh","Custom Errors","2026-04-10 16:08:03.879Z",{"collectionId":17,"collectionName":18,"created":39,"created_by":13,"id":40,"name":41,"updated":42,"updated_by":13},"2026-03-04 08:33:56.842Z","gf66sbalz5hp9nw","defer","2026-04-10 16:08:03.968Z",{"collectionId":17,"collectionName":18,"created":44,"created_by":13,"id":45,"name":46,"updated":47,"updated_by":13},"2026-03-04 08:33:57.434Z","hz551yc9f7fozes","การพัฒนาแอปพลิเคชัน","2026-04-10 16:08:04.227Z",{"collectionId":17,"collectionName":18,"created":49,"created_by":13,"id":50,"name":51,"updated":52,"updated_by":13},"2026-03-04 08:26:59.195Z","gab60xd583s3qaw","Superdev School","2026-04-10 16:07:37.087Z",{"code":54,"collectionId":55,"collectionName":56,"created":57,"flag":58,"id":59,"is_default":60,"label":61,"updated":62},"th","pbc_1989393366","locales","2026-01-22 10:59:55.832Z","twemoji:flag-thailand","s8wri3bt4vgg2ji",true,"Thai","2026-04-10 15:42:46.614Z",{"category":64,"collectionId":65,"collectionName":66,"expand":67,"id":81,"views":82},"wqxt7ag2gn7xcmk","pbc_2105096300","school_blogs",{"category":68},{"blogIds":69,"collectionId":70,"collectionName":71,"created":72,"created_by":13,"id":64,"image":73,"image_alt":13,"image_path":74,"label":75,"name":76,"priority":77,"publish_at":78,"scheduled_at":13,"status":79,"updated":80,"updated_by":13},[],"sclcatblg987654321","school_category_blogs","2026-03-04 08:33:53.210Z","59ty92ns80w_15oc1implw.png","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclcatblg987654321\u002Fwqxt7ag2gn7xcmk\u002F59ty92ns80w_15oc1implw.png",{"en":76,"th":76},"Golang The Series",1,"2026-03-16 04:39:38.440Z","published","2026-04-25 02:32:15.470Z","5sadmm5cq63xrku",450,"1hkpcxhr5zlsw5l",[20,25,30,35,40,45,50],"2025-01-22 05:04:37.050Z","เรียนรู้การตรวจสอบและคืนค่า Error การสร้าง Custom Errors และการบันทึก Log ด้วย log ในภาษา Go","go-error-handling-logging","2026-04-25 02:47:28.642Z",{"th":87}]