异常引起的AppDomain时,它不应该?

问题描述 投票:3回答:2

我的工作我的MCTS和目前正在研究的AppDomain功能。但是我遇到什么不清楚。 AppDomain应该是捕捉Exception并允许域安全地卸下。 (随着StackOverflowException的可能的例外如别处所建议的)

AppDomainSetup setup = new AppDomainSetup();
setup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
Evidence adevidence = AppDomain.CurrentDomain.Evidence;
domain.UnhandledException += new UnhandledExceptionEventHandler(domain_UnhandledException);
AppDomain domain = AppDomain.CreateDomain("MyDomain", adevidence, setup);

当我决定在我为这个目的,我应该得到一个安全创建的组件创建示例类的实例,限制域名将捕获发生,可以安全地卸载错误。至少这是我的理解它从我的研究的书。

var type = (IDoSomeWork) domain.CreateInstanceAndUnwrap("Library1", "Library1.Class1");
type.Run();

然而,这将引发对type.Run()异常(因为我做了这样的说法)。但不应该AppDomain捕捉它安全?这不就是为什么我们有一个AppDomain

更新:

按照要求,我已经包括了Library1.Class1的定义。此外,为了清楚起见,UnhandledExceptionEventHandler对捕获异常没有影响,是不相关的问题。

[Serializable]
public class Class1 : MarshalByRefObject, IDoSomeWork
{
    public void Run()
    {
        Debug.WriteLine(AppDomain.CurrentDomain.FriendlyName);
        throw new ApplicationException(String.Format("{0}", this.ToString()));
    }
}

我已经验证了它在MyDomain运行。

c# .net appdomain
2个回答
2
投票

UnhandledException事件不捕获异常在传统意义上,像一个try-catch块(据我所知),它仅仅是一个信息点,让您在执行日志记录和这样的任务。

从qazxsw POI行情:

此事件提供未捕获异常的通知。它允许应用程序记录有关异常的信息系统默认的处理程序异常报告给用户,并终止应用程序之前。

所以异常仍将泡了系统默认的异常处理程序。


0
投票
MSDN documentation

增加了一个顶级异常处理程序,但你在这种情况下,想要的东西,可能不会做。

© www.soinside.com 2019 - 2024. All rights reserved.