Во-первых, вам нужно пометить исключение как обработанное в обработчике событий, прикрепленном к AppDomain.CurrentDomain.UnhandledException, чтобы предотвратить сбой приложения:
Application.Current.Dispatcher.UnhandledException += (sender, e) => e.Handled = true;
Во-вторых, исключение выдается во время данного модуля Prismинициализация может остановить загрузку других модулей.Чтобы обойти это, вы можете создать подкласс ModuleManager следующим образом:
public class ErrorHandlingModuleManager : ModuleManager
{
public ErrorHandlingModuleManager(IModuleInitializer moduleInitializer, IModuleCatalog moduleCatalog, ILoggerFacade loggerFacade) : base(moduleInitializer, moduleCatalog, loggerFacade)
{
}
protected override void LoadModulesThatAreReadyForLoad()
{
var initializationExceptions = new List<Exception>();
while (true)
{
try
{
base.LoadModulesThatAreReadyForLoad();
break;
}
catch (ModuleInitializeException e)
{
initializationExceptions.Add(e);
}
catch (Exception e)
{
initializationExceptions.Add(e);
break;
}
}
if (initializationExceptions.Any())
throw new AggregateException(initializationExceptions);
}
}
}
Обязательно зарегистрируйте ErrorHandlingModuleManager в контейнере Mef, чтобы переопределить значение по умолчанию.