异常后停止功能

时间:2015-08-03 20:11:29

标签: c#

我在创建错误处理方法时遇到了一些问题。遇到错误后,sub继续,好像什么也没发生。这就是我所拥有的:

try 
{
    int numericID = Convert.ToInt32(titleID);
}
catch(Exception)
{
    errorHandling("Invalid Title");
}

void errorHandling(string error)
{
    MessageBox.Show("You have encountered an error: " + error, "Error");
    return;
}

提前致谢!

5 个答案:

答案 0 :(得分:6)

try 
    {
        int numericID = Convert.ToInt32(titleID);
    }
    catch(Exception)
    {
        errorHandling("Invalid Title");
        return; // <---- perhaps you wanted to put the return here?
    }

void errorHandling(string error)
{
    MessageBox.Show("You have encountered an error: " + error, "Error");
    // return; <-- does nothing
}

在捕获异常时,您想要执行其他功能的代码吗?只需创建一个全局布尔值:

bool exceptionCaught = false;

....

try 
    {
        int numericID = Convert.ToInt32(titleID);
    }
    catch(Exception)
    {
        errorHandling("Invalid Title");
        exceptionCaught = true;
        return; // <---- perhaps you wanted to put the return here?
    }

void errorHandling(string error)
{
    MessageBox.Show("You have encountered an error: " + error, "Error");
    // return; <-- does nothing
}

....

void OtherMethod()
{
    if(!exceptionCaught)
    {
        // All other logic
    }
}

答案 1 :(得分:1)

想要发生什么?

一些常见的事情正在冒泡......

    try 
    {
        int numericID = Convert.ToInt32(titleID);
    }
    catch(Exception)
    {
        errorHandling("Invalid Title");

        // rethrow the error after you handle it
        //
        throw;
    }

或者您可以在errorHandling()方法中记录错误。

或者您可以从父方法中return抛出异常。

无论哪种方式,您都{{}}了例外,并且您正在执行catch方法,但此时errorHandling()块已完成执行... 所以代码继续

无论你想发生什么...... 让它在catch区块中发生,或者你只是在沉默错误 。如果您不希望继续执行,则不允许继续执行,但您需要在catch块中明确编写代码。

答案 2 :(得分:0)

return方法末尾的errorHandling语句不会终止该程序。要终止,您需要根据应用程序的类型调用Application.Exit或System.Environment.Exit

答案 3 :(得分:-1)

您在捕获异常后调用方法。如果要编程结束,则需要在调用errorHandling后重新抛出异常,或者调用System.Environment.Exit(1);来结束程序。

答案 4 :(得分:-1)

我想如果你加一个休息时间;除此之外,它可能会解决您的问题。或者您也可以尝试使用投掷。