来自Dll get Erception的C#用户定义的异常处理未被用户代码处理

时间:2016-08-07 16:29:50

标签: c# dll error-handling unhandled-exception

我正在使用动态c#应用程序,它将所有类从我单独创建的Dll文件链接到主应用程序,在这些文件中,当我动态连接我的dll文件时,错误处理程序希望通过连接抛出错误,因为它以前是我试图做的事情

我有一个带有此编码和类的dll文件

class clsGlobles {

public object dlststus = false; // dtabase file status

public clsGlobles()
{
    try
    {
        if (dlststus == true)
        {

        }
        else
        {
            throw new Exception("Some important files are missing - Please re-install the application"); //throw this as a error and stop running the program

        }
    }
    catch (Exception ex)
    {
        throw ex; //throw exception to the upper throw catch exception where i like to hand it
    //Evan i use throw; instead of throw ex; i get the same result
    }
}

然后我通过使用动态方法链接这个dll文件它工作得很好但是当我尝试传递用户定义错误然后我得到错误作为unhanded异常并在dll文件中显示类,我不要想要在dll文件中处理我的类中的任何异常,只需将它们传递给下一步并在我使用它们的程序中处理它们。

这是我使用它的代码

private void frmMain_Load(object sender, EventArgs e)
{
    string tf = "";

            tf = Application.StartupPath + "\\clsGlobles.dll";
            try
            {
                Assembly asm = Assembly.LoadFrom(tf);
                AppDomain.CurrentDomain.Load(asm.GetName());
                Type type = asm.GetTypes().First(t => t.Name == "clsGlobles");
                glbls = Activator.CreateInstance(type);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString()); // the error i throw in inside the dll class should come here and i could handle it from here
            }

}  

enter image description here

当我关闭上面的错误框并继续运行时,它也会显示类似的内容

enter image description here

1 个答案:

答案 0 :(得分:0)

我想我在这里得到答案,当我通过引用将 dll 链接到应用程序中,然后将其作为应用程序中的对象{{1它的工作正常并允许我对应用程序using语句使用throw异常,但是当它动态地添加到应用程序中时,我希望我能处理它我在 dll 中的例外并解决了所有问题,它不允许我将throw catch的异常抛给应用

Evan a没有错误的处理using throw new exception("err")没关系,但它不会允许throw new exception在catch块中