สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Control Flow

Control Flow ในภาษา Go - การใช้ if และ else Control Flow ในภาษา Go - การใช้ else if Control Flow ในภาษา Go - การใช้ switch สำหรับการเลือกการทำงาน Control Flow ในภาษา Go - การใช้ fallthrough ใน switch Control Flow ในภาษา Go - การใช้ for สำหรับการวนลูป Control Flow ในภาษา Go - การใช้ range ในการวนลูป Array, Slice, และ Map Control Flow ในภาษา Go - การใช้ break เพื่อออกจากลูป Control Flow ในภาษา Go - การใช้ continue เพื่อข้ามการทำงานในลูป Control Flow ในภาษา Go - การใช้ goto สำหรับการกระโดดไปยัง Label Control Flow ในภาษา Go - การทำงานกับการจัดการข้อยกเว้น (Error Handling) Control Flow ในภาษา Go - การใช้ panic และ recover

Control Flow ในภาษา Go - การใช้ panic และ recover

 

ภาษา Go นับเป็นหนึ่งในภาษาที่กำลังได้รับความนิยมเพิ่มขึ้นเรื่อย ๆ ในวงการพัฒนาซอฟต์แวร์ ด้วยความเรียบง่าย ความเร็ว และการทำงานที่รองรับ Concurrency ได้อย่างมีประสิทธิภาพ ภาษา Go จึงเป็นภาษาโปรแกรมที่ได้รับความนิยมในการพัฒนาแอปพลิเคชันประสิทธิภาพสูงต่าง ๆ อย่างไรก็ตาม การจัดการกับข้อผิดพลาด (Error Handling) ในภาษา Go ก็มีเอกลักษณ์ที่น่าสนใจ โดยเฉพาะการใช้คำสั่ง `panic` และ `recover` ซึ่งจะมีประโยชน์อย่างไรบ้าง เราจะได้เรียนรู้กันในบทความนี้

 

การใช้ panic ใน Go

`panic` เป็นคำสั่งในภาษา Go ที่ใช้ในการระบุสถานะของโปรแกรมที่ไม่สามารถดำเนินต่อไปได้ ซึ่งหมายความว่าเมื่อ `panic` ถูกเรียก โปรแกรมจะหยุดทำงานในทันที และเริ่มทำการ Unwinding Stack หรือย้อนกลับให้เห็นว่าเกิดอะไรขึ้นในโปรแกรม

ตัวอย่างโค้ดการใช้ `panic` ในการทำงาน:


package main

import "fmt"

func divide(a, b int) int {
    if b == 0 {
        panic("division by zero")
    }
    return a / b
}

func main() {
    fmt.Println(divide(10, 2)) // ข้อมูลปกติ
    fmt.Println(divide(10, 0)) // เกิด panic
}

ในตัวอย่างด้านบน เมื่อพบการหารด้วย 0 ฟังก์ชัน `divide` จะเรียกใช้ `panic` และโปรแกรมจะหยุดทำงานทันที พร้อมแสดงข้อความ "division by zero"

 

การเลือกใช้ recover ในการจัดการ panic

ในบางกรณี เราอาจไม่ต้องการให้โปรแกรมหยุดการทำงานทันทีที่เกิด `panic` แต่ต้องการหาวิธีจัดการกับข้อผิดพลาดที่เกิดขึ้นเพื่อให้โปรแกรมทำงานต่อไปได้ ในภาษา Go นั้นมีคำสั่ง `recover` ที่ช่วยให้เราสามารถกู้คืนจากสถานะ `panic` ได้

โดยปกติ คำสั่ง `recover` จะถูกเรียกใช้ภายใน defer function ซึ่งจะช่วยให้สามารถจัดการหรือเรียกใช้การประมวลผลบางอย่างก่อนที่โปรแกรมจะหยุดทำงาน

ตัวอย่างการใช้ `recover`:


package main

import "fmt"

func safeDivide(a, b int) {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered from panic:", r)
        }
    }()
    fmt.Println(divide(a, b))
}

func divide(a, b int) int {
    if b == 0 {
        panic("division by zero")
    }
    return a / b
}

func main() {
    safeDivide(10, 2) // ข้อมูลปกติ
    safeDivide(10, 0) // จัดการกับ panic
    fmt.Println("Program continues to run")
}

ในโค้ดนี้ เมื่อเกิด `panic` ในฟังก์ชัน `divide` ฟังก์ชันสั่ง `recover` จะช่วยให้เราสามารถกู้คืนข้อผิดพลาดและแสดงข้อความ "Recovered from panic" ทำให้โปรแกรมสามารถทำงานต่อได้

 

ข้อควรระวังในการใช้ panic และ recover

การใช้ `panic` และ `recover` เป็นการจัดการข้อผิดพลาดในระดับที่ต้องระมัดระวัง และควรใช้ในกรณีที่ไม่มีวิธีอื่นที่เหมาะสมมากกว่าในการจัดการเหตุการณ์ที่ไม่คาดคิดนัก อย่างไรก็ตาม สิ่งสำคัญคือไม่ควรใช้ `panic` เป็นวิธีการจัดการข้อผิดพลาดที่เกิดขึ้นบ่อย ๆ ในโปรแกรมทั่ว ๆ ไป เสมือนการใช้ข้อยกเว้นในการเขียนโค้ดอย่างไร้ความระมัดระวัง นอกจากนี้ การใช้ `recover` ควรทำโดยมีการวางแผนเพื่อให้มั่นใจว่าโปรแกรมยังคงทำงานได้ถูกต้องตามที่ต้องการ โดยไม่ทำให้เกิดผลข้างเคียงที่ไม่พึงประสงค์

ในท้ายที่สุด การเข้าใจกลไกด้านการจัดการข้อผิดพลาดในภาษา Go ผ่านการใช้ `panic` และ `recover` นี้จะเป็นประโยชน์อย่างยิ่งในการพัฒนาโปรแกรมที่แข็งแกร่งและมีเสถียรภาพสูง หากคุณสนใจเรียนรู้การใช้งานและการเขียนโปรแกรมภาษา Go อย่างลึกซึ้ง เรายินดีเชิญคุณเข้าร่วมเรียนที่ EPT ซึ่งเรามีหลักสูตรต่าง ๆ ที่จะช่วยปูพื้นฐานและพัฒนาทักษะการเขียนโปรแกรมของคุณให้ไปถึงระดับมืออาชีพในการพัฒนาซอฟต์แวร์ในอนาคต!

 

 

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

หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/


Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android


บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา