我承认这是一个愚蠢的问题。所以,如果这会浪费你的时间,我很抱歉,但我找不到解决方案。
具有类库的WinForm应用程序。我使用Log4Net dll来记录信息。
在Button_Click上,我调用类库中的一个函数,可能会抛出错误。所以,我在try-catch-finally块中有函数的内容。在catch中,我编写了日志语句(使用Log4Net dll)。
现在,发生错误,我希望向UI显示一条消息。显示消息后,我希望它退出。
如何将控件从类库的catch块传递回Form代码,以便显示一条消息然后退出?
答案 0 :(得分:5)
在类库中的异常处理程序中记录错误之后,只需调用throw
而不使用任何参数,它将使用相同的callstack等重新抛出完全相同的异常。
然后让你的表格抓住它并按你的意愿处理它。
答案 1 :(得分:2)
在类库方法中,在catch中重新抛出异常,以便它可以冒泡到表单。
在表单中,Button_Click在try catch中包装Class Method调用,并在catch中显示消息并退出。
答案 2 :(得分:0)
该库应该在记录之后重新抛出异常。
class Form
{
OnClick()
{
try
{
library.Routine();
}
catch(Exception e)
{
// messagebox
// exit
}
}
}
class Library
{
public void Routine()
{
try
{
// stuff
}
catch(Exception e)
{
logger.error("error in routine", e);
throw;
}
}
}