[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"academy-blogs-en-1-1-all-go-error-handling-logging-all--*":3,"academy-blog-translations-hytpj1yzm79oi1x":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 and Error Handling & Logging - Mastering Error Management Like a Pro!","sclblg987654321","school_blog_translations","\u003Cp>\u003Cspan style=\"font-size:20px;\">\u003Cstrong>Go and Error Handling &amp; Logging - Mastering Error Management Like a Pro!\u003C\u002Fstrong>\u003C\u002Fspan>\u003C\u002Fp>\u003Cp>Errors are a part of programming, and in Go, we emphasize effective error handling.\u003C\u002Fp>\u003Cp>&nbsp;\u003C\u002Fp>\u003Cp>\u003Cspan style=\"font-size:18px;\">\u003Cstrong>What is Error Handling in Go?\u003C\u002Fstrong>\u003C\u002Fspan>\u003Cbr>Go does not use Exceptions like other languages but focuses on error checking through the return value of functions. This makes error management clearer and easier to control.\u003C\u002Fp>\u003Cp>Example of a function returning an 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>Creating Custom Errors\u003C\u002Fstrong>\u003C\u002Fspan>\u003Cbr>We can create our own specific errors to better describe events:\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 in Go\u003C\u002Fstrong>\u003C\u002Fspan>\u003Cbr>Logging is an essential part of monitoring and tracking errors that occur in the system.\u003C\u002Fp>\u003Cp>Example of using 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>Using defer for Resource Management\u003C\u002Fstrong>\u003C\u002Fspan>\u003Cbr>The defer statement in Go allows us to properly close files or other resources, even when errors occur.\u003C\u002Fp>\u003Cp>Example:\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>","18_11zon_y1vdtbzv7c.webp","https:\u002F\u002Ftwsme-r2.tumwebsme.com\u002Fsclblg987654321\u002Ff45w3k611ll8if0\u002F18_11zon_y1vdtbzv7c.webp","2026-03-04 08:33:59.280Z","",{"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:53.933Z","yyq22valznn0j0u","application development","2026-04-10 16:08:02.871Z",{"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},"en","pbc_1989393366","locales","2026-01-22 11:00:02.726Z","twemoji:flag-united-states","qv9c1llfov2d88z",false,"English","2026-04-10 15:42:46.825Z",{"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","hytpj1yzm79oi1x",226,"f45w3k611ll8if0",[20,25,30,35,40,45,50],"2025-01-22 05:04:41.001Z","Learn how to check and return Errors, create Custom Errors, and log with log in Go.","go-error-handling-logging","2026-04-25 02:47:28.883Z",{"en":87}]