Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ผู้ขายตัวอย่างดีที่สุดในการจัดการข้อผิดพลาดใน mvvmcross เป็นอย่างไร


ผู้ขายตัวอย่างดีที่สุดในการจัดการข้อผิดพลาดใน mvvmcross เป็นอย่างไร


ตัวอย่างขายดีใน ​​MVVMCROSS จัดการกับข้อผิดพลาดโดยใช้สองเทคนิคหลัก:

1. คลาส BaseViewModel สำหรับการจัดการข้อผิดพลาดที่ใช้ร่วมกัน: ตัวอย่างขายดีที่สุดใช้คลาส `BaseViewModel` เพื่อห่อหุ้มรหัสที่ใช้ร่วมกันรวมถึงกลไกการจัดการข้อผิดพลาด วิธีการนี้ช่วยให้การจัดการแบบรวมศูนย์ของตรรกะการจัดการข้อผิดพลาดทั่วไปในรูปแบบมุมมองที่แตกต่างกัน ตัวอย่างเช่นวิธี `GeneralAsyncLoad 'ถูกกำหนดไว้ใน` baseviewmodel' และใช้โดยรุ่นมุมมองที่หลากหลายเพื่อโหลดข้อมูลแบบอะซิงโครนัส วิธีนี้อาจรวมถึงตรรกะการจัดการข้อผิดพลาดที่ใช้ร่วมกันในแอปพลิเคชัน

2. เราเตอร์ข้อผิดพลาดระดับแอพ: ตัวอย่างยังใช้ "เราเตอร์ข้อผิดพลาด" ระดับแอพเพื่อจัดการวิธีการเผยแพร่ข้อผิดพลาดจากโมเดลมุมมองไปยังส่วนต่อประสานผู้ใช้ สิ่งนี้เกี่ยวข้องกับการใช้วัตถุที่ถูกฉีดโดยทั่วไปคือ `ierrorreporter` ซึ่งเริ่มต้นเป็นซิงเกิลในระหว่างการสร้างแอพ โครงการ UI เฉพาะแพลตฟอร์มแต่ละรายการสมัครสมาชิกกิจกรรมจากซิงเกิลนี้โดยใช้อินเทอร์เฟซ `ierrorSource` การตั้งค่านี้ช่วยให้กลไกการแสดงผลข้อผิดพลาดเฉพาะของแพลตฟอร์มเช่น UialerTViews บน iOS หรือขนมปังปิ้งบน Android ทำให้แต่ละแพลตฟอร์มสามารถจัดการกับข้อผิดพลาดในลักษณะที่มีอยู่ในสภาพแวดล้อม

ในทางปฏิบัติเมื่อเกิดข้อผิดพลาดในระหว่างการดำเนินการแบบอะซิงโครนัสเช่นการโหลดข้อมูลจากบริการเว็บข้อผิดพลาดจะถูกจับและรายงานโดยใช้ `ierrorreporter ' สิ่งนี้ช่วยให้แอปพลิเคชันแสดงข้อความแสดงข้อผิดพลาดที่ใช้งานง่ายหรือดำเนินการอื่นเช่นการลองดำเนินการใหม่หรือโหลดข้อมูลออฟไลน์

ตัวอย่างเช่นหาก A `CategoryListViewModel` พบข้อผิดพลาดในขณะที่โหลดหมวดหมู่มันสามารถใช้เมธอด` GeneralAsyncLoad 'จาก `BaseViewModel` เพื่อจัดการกับข้อผิดพลาด ข้อผิดพลาดจะถูกรายงานผ่าน `ierrorreporter` ซึ่งกระตุ้นการแจ้งเตือน UI ที่เหมาะสมตามแพลตฟอร์ม

วิธีการนี้ช่วยให้มั่นใจได้ว่าการจัดการข้อผิดพลาดนั้นมีทั้งแบบรวมศูนย์และยืดหยุ่นทำให้สามารถปรับตัวให้เข้ากับแพลตฟอร์มและสถานการณ์ต่าง ๆ ได้ง่ายภายในกรอบ MVVMCROSS

การอ้างอิง:
[1] http://slodge.blogspot.com/2012/05/one-pattern-for-error-handling-in.html
[2] https://leaware.com/creating-cross-platform-xamarin-applications-using-the-mvvmcross-framework/
[3] https://asktom.oracle.com/ords/f?p=100%3A11%3A%3A%3A%3A%3AP11_QUESTION_ID%3A1422998100346727312
[4] https://stackoverflow.com/questions/10411352/what-is-the-suggested-way-to-to-handle-exceptions
[5] https://github.com/mvvmcross/mvvmcross-samples/blob/master/oldsamples/bestsellers/bestsellers.touch/appdelegate.cs
[6] https://discourse.getdbt.com/t/how-to-handle-test-failures/3824
[7] https://www.telerik.com/blogs/blazor-best-practices-handling-errors
[8] https://stackoverflow.com/questions/15697523/running-sample-projects-in-mvvmcross-v3-hot-tuna
[9] https://visualstudiomagazine.com/articles/2018/05/08/build-a-xamarin.forms-application.aspx