ฉันได้รับ "โอกาส" ในการกอบกู้โครงการหลายโครงการและผู้บริหารแทนที่ทีมพัฒนาทั้งหมดเนื่องจากแอปมีข้อผิดพลาดมากเกินไปและผู้ใช้รู้สึกเบื่อกับปัญหาและวิ่งไปรอบ ๆ รหัสเหล่านี้ล้วน แต่มีการจัดการข้อผิดพลาดจากส่วนกลางที่ระดับแอพเหมือนกับคำตอบที่ได้รับการโหวตสูงสุด หากคำตอบนั้นเป็นวิธีปฏิบัติที่ดีที่สุดทำไมมันไม่ทำงานและอนุญาตให้ทีม dev ก่อนหน้านี้แก้ไขปัญหาได้ บางทีบางครั้งมันไม่ทำงาน? คำตอบข้างต้นไม่ได้พูดถึงว่านักพัฒนาใช้เวลาในการแก้ไขปัญหาเดียวนานแค่ไหน หากเวลาในการแก้ไขปัญหาคือการวัดที่สำคัญรหัสการใช้เครื่องมือกับ try..catch blocks คือแนวปฏิบัติที่ดีกว่า
ทีมของฉันแก้ไขปัญหาโดยไม่เปลี่ยน UI อย่างมีนัยสำคัญได้อย่างไร ง่ายทุกวิธีมีการลองทำ .. ถูกบล็อกและทุกอย่างถูกบันทึก ณ จุดที่ล้มเหลวด้วยชื่อเมธอดค่าพารามิเตอร์ของเมธอดที่ต่อกันเป็นสตริงที่ส่งผ่านพร้อมกับข้อความแสดงข้อผิดพลาดข้อความข้อผิดพลาดชื่อแอพวันที่ และรุ่น ด้วยข้อมูลนี้นักพัฒนาสามารถเรียกใช้การวิเคราะห์ข้อผิดพลาดเพื่อระบุข้อยกเว้นที่เกิดขึ้นมากที่สุด! หรือเนมสเปซที่มีจำนวนข้อผิดพลาดสูงสุด นอกจากนี้ยังสามารถตรวจสอบได้ว่าข้อผิดพลาดที่เกิดขึ้นในโมดูลได้รับการจัดการอย่างเหมาะสมและไม่ได้เกิดจากหลายสาเหตุ
ข้อดีอีกอย่างของผู้พัฒนาคือผู้พัฒนาสามารถกำหนดจุดพักหนึ่งในวิธีการบันทึกข้อผิดพลาดและด้วยจุดพักหนึ่งและคลิกปุ่ม debug "ก้าวออกไป" เพียงครั้งเดียวพวกเขาอยู่ในวิธีที่ล้มเหลวด้วยการเข้าถึงแบบเต็มจริง วัตถุที่จุดของความล้มเหลวสะดวกในหน้าต่างทันที มันทำให้ง่ายต่อการดีบักและอนุญาตให้ลากการดำเนินการกลับไปที่จุดเริ่มต้นของวิธีการทำซ้ำปัญหาเพื่อค้นหาบรรทัดที่แน่นอน การจัดการข้อยกเว้นจากส่วนกลางอนุญาตให้นักพัฒนาทำซ้ำข้อยกเว้นใน 30 วินาทีหรือไม่ เลขที่
คำสั่ง "วิธีการหนึ่งควรตรวจจับข้อยกเว้นเมื่อมันสามารถจัดการได้ด้วยวิธีที่สมเหตุสมผล" นี่หมายความว่าผู้พัฒนาสามารถคาดการณ์หรือพบข้อผิดพลาดทุกอย่างที่อาจเกิดขึ้นก่อนที่จะเผยแพร่ หากสิ่งนี้เป็นจริงในระดับสูงสุดตัวจัดการข้อยกเว้นของแอปจะไม่ต้องการและจะไม่มีตลาดสำหรับการค้นหาแบบยืดหยุ่นและการล็อกเริ่มต้น
วิธีการนี้ยังช่วยให้ devs ค้นหาและแก้ไขปัญหาต่อเนื่องในการผลิต! คุณต้องการดีบักโดยไม่มีดีบักเกอร์ในการผลิตหรือไม่? หรือคุณต้องการรับสายและรับอีเมลจากผู้ใช้ที่อารมณ์เสีย? วิธีนี้ช่วยให้คุณสามารถแก้ไขปัญหาก่อนที่คนอื่นจะรู้และไม่ต้องอีเมล, IM หรือ Slack พร้อมการสนับสนุนเนื่องจากทุกอย่างที่จำเป็นในการแก้ไขปัญหาอยู่ที่นั่น 95% ของปัญหาไม่จำเป็นต้องทำซ้ำ
ในการทำงานอย่างถูกต้องจะต้องรวมกับการบันทึกจากส่วนกลางที่สามารถจับเนมสเปซ / โมดูลชื่อคลาสเมธอดอินพุตและข้อความแสดงข้อผิดพลาดและเก็บไว้ในฐานข้อมูลเพื่อให้สามารถรวมกันเพื่อเน้นว่าวิธีใดล้มเหลวมากที่สุด คงที่ก่อน
บางครั้งนักพัฒนาเลือกที่จะโยนข้อยกเว้นสแต็กจาก catch catch แต่วิธีนี้ช้ากว่าโค้ดปกติ 100 เท่าที่ไม่ได้โยน แนะนำให้ใช้ Catch and release พร้อมการบันทึก
เทคนิคนี้ใช้เพื่อสร้างความเสถียรให้แอพที่ล้มเหลวทุกชั่วโมงสำหรับผู้ใช้ส่วนใหญ่ใน บริษัท Fortune 500 ที่พัฒนาโดย 12 Devs ในระยะเวลา 2 ปี การใช้ข้อยกเว้นที่แตกต่างกัน 3000 ข้อนี้ได้รับการระบุแก้ไขทดสอบและปรับใช้ใน 4 เดือน ค่าเฉลี่ยนี้จะแก้ไขโดยเฉลี่ยทุก 15 นาทีเป็นเวลา 4 เดือน
ฉันยอมรับว่ามันไม่สนุกที่จะพิมพ์ทุกอย่างที่จำเป็นในการใช้รหัสและฉันไม่ต้องการดูรหัสซ้ำ ๆ แต่การเพิ่มรหัส 4 บรรทัดลงในแต่ละวิธีนั้นคุ้มค่าในระยะยาว