我在创建错误处理方法时遇到了一些问题。遇到错误后,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;
}
提前致谢!
答案 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)
我想如果你加一个休息时间;除此之外,它可能会解决您的问题。或者您也可以尝试使用投掷。