退出C#库中的错误应用程序

时间:2010-11-11 08:13:02

标签: winforms exception-handling error-handling exit

我承认这是一个愚蠢的问题。所以,如果这会浪费你的时间,我很抱歉,但我找不到解决方案。

具有类库的WinForm应用程序。我使用Log4Net dll来记录信息。

在Button_Click上,我调用类库中的一个函数,可能会抛出错误。所以,我在try-catch-finally块中有函数的内容。在catch中,我编写了日志语句(使用Log4Net dll)。

现在,发生错误,我希望向UI显示一条消息。显示消息后,我希望它退出。

如何将控件从类库的catch块传递回Form代码,以便显示一条消息然后退出?

3 个答案:

答案 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;
        }
    }
}