繁体   English   中英

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

[英]How to pass exception message from DLL to main application

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

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

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

您可以在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函数,它可能会生成哪种类型的异常来通知调用函数对其进行操作。

有几种方法可以处理这个问题。

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

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

您可以根据需要操纵它。 进行实验,直到找到符合您需求的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM