假设我的dll文件中有一个类:
public ClassInDllFile()
{
String str = "";
try
{
str = someClassMethod();
}
catch (Exception e) // or more precised exception type
{
// some code
}
}
我不想在Dll级别的MessageBox中放置异常消息(它需要额外的引用),但我会将它传递给一些(例如)WinForm应用程序。
答案 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
。然后调用类可以在进行调用后检查该属性,并在需要时检索有关异常的更多详细信息。
你可以随心所欲地操纵它。进行实验,直到找到符合您需求的解决方案。