如何将异常消息从DLL传递到主应用程序

时间:2014-07-15 09:58:24

标签: c# exception dll share

假设我的dll文件中有一个类:

public ClassInDllFile()
{
    String str = "";
    try
    {
        str = someClassMethod();
    }
    catch (Exception e) // or more precised exception type
    {
        // some code
    }
}

我不想在Dll级别的MessageBox中放置异常消息(它需要额外的引用),但我会将它传递给一些(例如)WinForm应用程序。

2 个答案:

答案 0 :(得分:2)

您可以在WinForms类中捕获异常。

这意味着你不应该在这里捕获异常,但是在WinForms类本身,你可以在那里显示一个对话框。

你可以使用类似的东西(我改变了你的例子中的一些代码来改进命名):

public ClassInDllFile()
{
    # Other functions

    ///
    /// Might throw a ... exception
    ///
    public Run()
    {
        String str = someClassMethod(); # Might cause an exception

        # More code
    }

在你的WinForms课程中:

var instance = ClassInDllFile()
try
{
    instance.Run()
}
catch (Exception e) // or more precised exception type
{
    // Error handling code
}

# More code

同样最好记录ClassInDllFile.Run函数,它可以生成哪种类型的异常来通知调用函数对其进行操作。

答案 1 :(得分:1)

有几种方法可以解决这个问题。

一种简单的方法是抛出异常,并在外部/调用类中处理它。

另一种方法是从catch子句中的异常中收集信息(如ExceptionMessage,StackTrace,或许InternalException),并将这些信息存储在调用类可以检查的属性中。然后,您可能还会包含一个布尔属性,如Suceeded,如果发生异常,您将设置为false。然后调用类可以在进行调用后检查该属性,并在需要时检索有关异常的更多详细信息。

你可以随心所欲地操纵它。进行实验,直到找到符合您需求的解决方案。