如何区分InvalidOperationException异常类型?

时间:2019-11-24 16:05:23

标签: c# exception try-catch invalidoperationexception

如何检测InvalidOperationException类型

这是内部异常消息:

  

System.InvalidOperationException:ExecuteNonQuery要求打开并可用的Connection。连接的当前状态为关闭。

我需要完全检测这种类型的异常才能处理它。 我可以知道它的HResult编号或异常代码吗?还是其他方式?

3 个答案:

答案 0 :(得分:1)

此代码可能有帮助

subscriptions

答案 1 :(得分:0)

您可以使用try / catch异常处理层次结构,以便首先捕获InvalidOperationException并与其他异常类型(例如通用异常类型)分开处理。

inputfileonesomestring
input2fileone2somestring
input3fileone3somestring
inputfileoneabsomestring
input2fileone2absomestring
input3fileone3absomestring
inputfileonebcsomestring
input2fileone2bcsomestring
input3fileone3bcsomestring
inputfileonecdsomestring
input2fileone2cdsomestring
input3fileone3cdsomestring
inputfileonedesomestring
input2fileone2desomestring
input3fileone3desomestring
inputfileoneefsomestring
input2fileone2efsomestring
input3fileone3efsomestring
inputfiletwosomestring
input2filetwo2somestring
input3filetwo3somestring
inputfiletwoabsomestring
input2filetwo2absomestring
input3filetwo3absomestring
inputfiletwobcsomestring
input2filetwo2bcsomestring
input3filetwo3bcsomestring
inputfiletwocdsomestring
input2filetwo2cdsomestring
input3filetwo3cdsomestring
inputfiletwodesomestring
input2filetwo2desomestring
input3filetwo3desomestring
inputfiletwoefsomestring
input2filetwo2efsomestring
input3filetwo3efsomestring
inputfilethreesomestring
input2filethree2somestring
input3filethree3somestring
inputfilethreeabsomestring
input2filethree2absomestring
input3filethree3absomestring
inputfilethreebcsomestring
input2filethree2bcsomestring
input3filethree3bcsomestring
inputfilethreecdsomestring
input2filethree2cdsomestring
input3filethree3cdsomestring
inputfilethreedesomestring
input2filethree2desomestring
input3filethree3desomestring
inputfilethreeefsomestring
input2filethree2efsomestring
input3filethree3efsomestring

但是,您的问题表明这对您不起作用,因为您提到了内部例外情况。在这种情况下,您可能需要对内部异常进行某种类型检查:

fileone
filetwo
filethree

答案 2 :(得分:0)

您能给我们更多背景吗?这将使我们更容易回答您的问题。

但是,如果我对您的理解正确,您会尝试处理带有内部异常的“某物”。从C#6开始,有例外过滤器可用。有关异常过滤器的更多信息,请参见Exception filters

该文档还提供了一个示例。

在特定情况下,您可以按如下方式使用异常过滤器:

try
{
    // Do something that could cause a InvalidOperationException
}
catch (InvalidOperationException ex) when (ex.InnerException is SomeTypeOfException)
{
    // Handle this type of exception
}
catch (InvalidOperationException ex) when (ex.InnerException is AnotherSomeTypeOfException)
{
    // Handle this kind of exception
}