畅销书中的MVVMCross样本使用两种主要技术处理错误:
1。用于共享错误处理的BaseViewModel类:畅销书样本利用`baseViewModel`类来封装共享代码,包括错误处理机制。这种方法允许在不同的视图模型中对常见错误处理逻辑进行集中管理。例如,“ generalAsyncload”方法在`baseViewModel'中定义,并由各种视图模型使用以异步加载数据。此方法可以包括在整个应用程序中共享的错误处理逻辑。
2。应用程序级别错误路由器:该示例还采用应用程序级“错误路由器”来管理如何从视图模型传播到用户界面的错误。这涉及使用一个注入的对象,通常是“ iErrorreporter”,该对象在应用程序构造过程中以单身为初始化。每个平台特定的UI项目都使用“ IERRORSOURCE”界面订阅了该单例的事件。该设置启用了特定于平台的错误显示机制,例如iOS上的UialerTview或Android上的敬酒,允许每个平台以其环境本地的方式处理错误。
在实践中,当异步操作期间发生错误时,例如从Web服务加载数据时,使用“ iErrorreporter”捕获并报告了错误。这允许应用程序显示用户友好的错误消息或采取替代操作,例如重试操作或加载离线数据。
例如,如果“ categoryListViewModel”在加载类别时会遇到错误,则可以使用`baseViewModel`使用`generalAsyAsyncload`方法来处理错误。然后通过“ iErrorreporter”报告该错误,该错误基于平台触发适当的UI通知。
这种方法确保了错误处理既集中又灵活,从而可以轻松适应MVVMCross框架内的不同平台和方案。
引用:[1] http://slodge.blogspot.com/2012/05/oone-pattern-for-error-error andling-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%3A%3A%3A%3AP11_QUESTION_ID_ID%3A14229998100346727312
[4] https://stackoverflow.com/questions/10411352/what-is-the-suggested-way-way-to-handle-exceptions-during-in-a-a-mvvmcross-cross-application
[5] https://github.com/mvvmcross/mvvmcross-samples/blob/master/oldsamples/bestsellers/bestsellers.touch/appdelegate.cs
[6] https://discourse.getdbt.com/t/how-to-handle-thandle-test-failures/3824
[7] https://www.telerik.com/blogs/blazor-best-practices andling-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