我正在使用 C# 和 Caliburn。
是否有一种全局方法来捕获所有视图模型中的所有异常?
从 DI/IoC 容器导入时出现某种异常怎么办?
我基本上想在发生这种情况时显示一个消息框。
RescueAttribute 在我看来就像必须放在每个视图模型类上一样,当您同时使用 AsyncActionAttribute 时它似乎不起作用。
该方法IConventionManager.ApplyActionCreationConventions(IAction action, IMethod targetMethod)
在操作创建后立即调用,并且可以向其添加过滤器。
您可以提供自定义IConventionManager
覆盖DefaultConventionManager.ApplyActionCreationConventions
并在操作中推送救援过滤器。
请注意,在这种情况下,无论如何您都必须在每个 ViewModel 上提供救援方法;为了克服这个问题,您可以构建一个新的自定义救援过滤器(遵循原始过滤器的路线)并将异常分派到您的基础设施。
有一种非常简单的方法可以实现这一点,只需覆盖 Bootstrapper 中的 UnhandledException 方法。
这里有一个例子:Global handling exception in WPF app with Caliburn.Micro