เวลาเขียนโค้ด ระหว่างการเอา try catch
1) จับย้ายไปอยู่ในฟังก์ชั่น
2) หรือจับมาไว้ข้างนอก
เขียนโค้ดอย่างไหนดี?
.
ถ้าเน้นเรื่องโค้ดสะอาดสะอ้าน
บำรุงรักษาง่าย
try catch ก็ควรแยกไปอยู่ในแต่ละฟังก์ชัน
เหตุผลเพราะว่า
.
1) ถ้าดึง try catch ออกมาไว้ข้างนอก
เช่นจับ มาไว้หน้ารวมก็จะปวดหัว
อาจสับสนได้ว่าเส้นทาง error มาจากฟังก์ชันไหน?
.
2) ถ้าวาง try catch ไว้ข้างนอก
ก็มีโอกาสเขียนโค้ดซ้ำๆ แบบเดียวกันนี้ หลายจุดในโค้ด
ทำให้การบำรุงรักษาลำบาก
เพราะโค้ดซ้ำซ้อน
แก้ทีต้องแก้หลายจุด
.
สู้ยุบ try catch
หุบเข้าไปไว้จุดเดียวดีกว่า
.
.
แต่มันก็ยังมีข้อเสีย
เรื่องการวาง try catch
ไม่ว่าจะวางในฟังก์ชัน
หรือวางไว้ข้างนอก
ตามประสบการณ์
มันมีโอกาสเกิดความผิดพลาดเงียบๆ
อย่างคาดไม่ถึง
.
เพราะเวลาเกิด error
เราไม่ยอมให้โปรแกรมพัง
แต่เราดันให้มันกลับเข้ามาทำงานต่อได้ปกติ
ด้วยการใช้ try catch
.
พูดง่ายๆ จากที่เกิด error อยู่ดีๆ
แล้วมันก็กลับเข้าสู่เส้นทางปกติ
ซึ่งตอนกลับเข้ามานี้แหละ...
อาจทำให้เส้นทางการทำงานของโปรแกรมเปลี่ยนไปจากเดิม
อย่างคาดไม่ถึงก็เป็นได้
.
ยิ่งเราไม่มีการแสดง error ที่เกิดขึ้นออกมา
ก็อาจหลงคิดว่าโปรแกรมทำงานปกติดี
แต่มันคือ error เงียบ ที่หลบซ่อนเอาไว้
.
.
ซึ่งปัญหาความผิดพลาดเงียบๆ นี้
➖ ถ้าโชคดี โปรแกรมก็ทำงานปกติไม่มีอะไรเกิดขึ้น
➖ ถ้าไร้โชค ก็เกิดการทำงานผิดแปลกประหลาด ชวนให้งงงวย
➖ ถ้าราหูเข้า พระเสาร์แทรก เคราะห์ร้ายสุดๆ แบบซวยไปเลย
อาจทำให้เส้นทางโปรแกรมมันผิดเพี้ยนไป
จนทะลุเรื่อง security ที่เราวางไว้
.
ซึ่งเหตุการณ์แบบหลัง hacker ชอบดีนัก ยิ้มเลย
พวกเขาแค่ส่งข้อมูลผิดๆ มา ก็ทะลุระบบ หลุดเข้ามาได้เลย
.
.
ดังนั้นบางครั้งเวลาเขียนโปรแกรม
ปล่อยให้เกิด exception โดยไม่ต้อง try catch แต่แรก
ให้โปรแกรมพังไปเลยก็น่าจะดีกว่าหรือเปล่า? 🤔🤔🤔
อันนี้ตั้งคำถามชวนคิด?
.
เพราะเวลา test โน่นนี้นั้น
จะได้ไล่เช็คความผิดพลาดง่าย เห็นกันเต็มตา
เห็น error คาตา ยังไงมันก็วิเคราะห์ง่ายมาก
.
จากนั้นพอเห็นความผิดพลาดค่อยไปตามแก้
ค่อยใส่ try catch ตามความเหมาะสม
.
จะใส่อยู่ในฟังก์ชัน
หรือเอามารวมไว้ข้างนอก
แล้วแต่สถานการณ์
บอกไม่ได้เหมือนกันว่าอันไหนถูกหรือผิด
.
.
สุดท้ายการเขียนโปรแกรมก็ไม่มีอะไรแน่นอนตายตัว
แล้วแต่ความถนัด
ขึ้นกับความเหมาะสมของแต่ละงาน
แล้วแต่โปรเจค ขึ้นกับทีมด้วย
เพราะบางทีมมีการรีวิวโค้ด เน้นโค้ดที่มีคุณภาพ
เขาจะกำหนดไสตล์การเขียนโค้ดต้องทำไง
try catch ต้องวางไว้จุดไหน
เราก็ทำตามนั้น
ไม่ต้องไปอินดี้ เขียนแหวกแนว
.
จบแหละ
+++++++++++++++++++++++
.
.
.
.
.
ก่อนจากกันไปอยากจะแนะนำ
หนังสือ “โปรแกรมเมอร์ก็รวยได้ ด้วยเส้นทางเอาท์ซอร์สสายดำ”
เล่มนี้จะเล่าเรื่องราวของเอาท์ซอร์ส (Outsource) 🔥
ในสายงานซอฟต์แวร์เป็นหลัก
หนึ่งในเส้นทางโปรแกรมเมอร์จะสามารถอัพเดตเงินเดือน
ให้เกินครึ่งแสนในระยะเวลาอันสั้น
.
โดยจำหน่ายเป็นเล่มกระดาษจริง
✔ เนื้อในจะเป็นขาวดำทั้งเล่ม
✔ ราคา 350 บาท รวมค่าส่งแล้ว
✔ ถ้าสนใจติดต่อไลน์ @269aibvq เดี๋ยวส่งเลขบัญชีไปให้
😓 แต่เนื่องจากตีพิมพ์ออกมาน้อย
ตอนนี้เหลือ 40 กว่าเล่ม
ถ้าสินค้าหมดก่อนก็ของดจำหน่ายชั่วคราว
เลยขอแจ้งให้ทราบล่วงหน้า
.
✔ สำหรับตัวอย่างหนังสือ ดาวน์โหลดได้ตามลิงก์ข้างล่าง 👇
https://drive.google.com/file/d/1tAnMozeYd63dcbBGTQmT_ZrpSaamZS3e
youtube: https://youtu.be/Ljf9iJhLcIs
.
👉 หมายเหตุผมยังขายเป็นเวอร์ชั่นอีบุ๊กให้อ่าน
✔ ราคาจะถูกลงมาหน่อย 250 บาท กับ 279 บาท ฿
✔ เนื้อในจะเป็นสีสัน (ไม่ใช่ขาวดำแบบเล่มจริง)
✔ อ่านรายละเอียดเวอร์ชั่น ebook ก่อนตัดสินใจซื้อ 👇
https://www.patanasongsivilai.com/blog/sale_book_rich_with_outsource/
.
✍ เขียนโดย โปรแกรมเมอร์ไทย thai programmer
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「try catch (exception)」的推薦目錄:
- 關於try catch (exception) 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最讚貼文
- 關於try catch (exception) 在 BorntoDev Facebook 的最佳貼文
- 關於try catch (exception) 在 91 敏捷開發之路 Facebook 的最佳解答
- 關於try catch (exception) 在 コバにゃんチャンネル Youtube 的最讚貼文
- 關於try catch (exception) 在 大象中醫 Youtube 的最佳貼文
- 關於try catch (exception) 在 大象中醫 Youtube 的精選貼文
- 關於try catch (exception) 在 例外處理(Exception) - Java學習筆記 的評價
- 關於try catch (exception) 在 Flutter: How do I avoid repetition of try-catch-exception? 的評價
- 關於try catch (exception) 在 Java Tutorial - TRY CATCH for handling exceptions - YouTube 的評價
- 關於try catch (exception) 在 try, throw, and catch Statements (C++) - GitHub 的評價
- 關於try catch (exception) 在 try-finally 和try-catch-finally 語句| 他山教程,只選擇最優質的 ... 的評價
- 關於try catch (exception) 在 Why catch code of an try catch exception are not executed ... 的評價
- 關於try catch (exception) 在 泰迪軟體- catch(Exception e)的這個catch block有一個術語 的評價
try catch (exception) 在 BorntoDev Facebook 的最佳貼文
🤣 หลายครั้งแค่ Try Catch Exception ก็ช่วยลดปัญหาเราได้ (แม้มันจะเป็นเพียงเวลาสั้น ๆ ก็ตาม 5555)
.
อะ มาโหมดจริงจังกันบ้าง ! ถามว่าใช้ Try Catch Exception มันเป็นเรื่องที่ผิดไหม ? คำตอบคือ "ไม่ผิดเลยยยยย"
.
🔥 แต่ต้องมี * ตัวโต ๆ ไว้หน่อยว่า เราควรจะจัดการกับ Exception ที่เขาพ่นออกมาให้มันถูกต้องด้วย ไม่ใช่การใช้ Exception ตัวใหญ่สุดแบบในภาพ 555
.
เพราะเราจะได้จัดการต่อได้ว่า
.
"อ่อ..ปัญหาเกิดจากมันต่อ Database ไม่ได้นะ ?"
.
"อ่อ..มันใช้ io เขียน อ่าน ลบไฟล์ไม่ได้นะ ?"
.
ทั้งนี้เพื่อที่ว่าเราจะจัดการกับพวก Alternative Flow เหล่านี้ยังไง และ จะแจ้ง User ให้ทราบได้ว่าจะต้องทำยังไงกันต่อนั่นเเองเจ้าค่าาา <3
.
#borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
try catch (exception) 在 91 敏捷開發之路 Facebook 的最佳解答
在鈦坦那邊花了蠻多時間把產品架構面的 error handling 機制弄好,不再是到處 try/catch 只寫 log return false.
不再是無謂的 try/catch re-throw exception.
不再是 catch(ex) throw ex; 的該死寫法。甚至吃掉 exception 不做事的情況。
該記 log 的只在邊界層,透過 decorator/action filter/middleware 來封裝與加載。也不再有那種 log 只記到表層的 call stack 而沒記錄到 inner exception 真正的問題發生點。
該做 error handling 或附加 run time 的資訊,handle 完 re-throw 自定義的 custom business exception, 再交給 error handling 底層來觸發對應的 error handler。
在發現問題(例外)的第一時間點 throw exception 通知整個 process 發生了什麼問題。
整個 call stack 與方法簽章都是乾乾淨淨的「正常流程」,沒有不必要的 return true/false 來通知是否有異常,也沒有不必要的 error code Enum 來一路傳遞回呼叫端。
發生怎樣的異常,該決定怎樣的 error code/status code 通知呼叫端,是最後要回傳結果那一層的 error handle 職責與行為。
Error handling 本身就是一整門學問,能在企業等級產品架構裡面打好這段基礎,可以指數性降低 application design 的複雜度。
鈦坦的產品工程師扛霸子之一的 Jrting ,開始把這門知識整理成系列文了,希望能給大家一些幫助。
https://medium.com/@neokn/exception-%E6%80%8E%E9%BA%BC%E4%B8%9F%E6%89%8D%E4%B8%9F%E5%BE%97%E6%BA%96-a385bd27ed15
try catch (exception) 在 コバにゃんチャンネル Youtube 的最讚貼文
try catch (exception) 在 大象中醫 Youtube 的最佳貼文
try catch (exception) 在 大象中醫 Youtube 的精選貼文
try catch (exception) 在 Java Tutorial - TRY CATCH for handling exceptions - YouTube 的推薦與評價
Try / catch blocks in your Java code make it easy to handle exception errors. Learn how to set them up to handle multiple kinds of exceptions. ... <看更多>
try catch (exception) 在 例外處理(Exception) - Java學習筆記 的推薦與評價
例外處理(Exception) · 使用例外處理(try、catch、finally). 以下為程式說明:. try{ · 內建例外. java產生的例外是一個物件,屬於Throwable類別或其子類別的物件。 子 ... ... <看更多>