这是一个寻求简单答案的简单问题。演示不需要代码。当我调用一个函数时,它返回一个异常,整个函数停止。如何忽略异常并继续该功能?
答案 0 :(得分:4)
你不能忽视这个例外。
如果你没有捕获它,那么异常将传播调用堆栈,直到某人抓住并处理它,或者它到达调用堆栈的顶部并且你的程序停止。
为避免这种情况,您只需捕获异常并决定如何处理它。如果处理它意味着什么也不做,那么只是......当你发现异常时什么都不做:
try
{
SomeFnWhichThrowsAnException();
}
catch
{
// NO-OP
}
// NO-OP
评论(缺少“无操作”)是一个指示器,用于指示异常的“处理”是故意什么都不做,以避免任何任何人在将来阅读suh代码并将空的catch块解释为错误或疏忽时可能会产生误解。
应该提到的是,即使有一个评论和一个“好理由”无法对异常做出任何反应,这也是非常可疑的并且代码味道非常糟糕。
可能更常见的是明确忽略非常具体的异常或仅在特定情况下这样做,但忽略每个可能的异常是非常不可取的(考虑到这将包括诸如堆栈溢出之类的异常或内存不足等情况。)
答案 1 :(得分:1)
try
{
MyFunctionThatErrors();
}
catch{}
答案 2 :(得分:0)
您可以使用try {..} catch {..}语句。 这是参考文档。 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/try-catch
答案 3 :(得分:0)
try ... catch语句应该完成这项工作:
try {
// your code that might throw an exception here
} catch {
}
// code here will execute even if there is an exception
但是 ,try ... catch语句不能用作流控制语句。你不应该没有充分的理由忽略这个例外。你应该避免首先抛出异常。
例如,如果字符串参数格式错误,Convert.ToInt32
可能会抛出异常。你不应该使用try ... catch来检测无效的用户输入。您应该使用其他方法检查输入是否有效,例如regex。