![](/img/trans.png)
[英]Want to pass dynamic File path from main web application to a separate DLL. That DLL is separately done using NLog
[英]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.