首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何区分InvalidOperationException异常类型?

如何区分InvalidOperationException异常类型?
EN

Stack Overflow用户
提问于 2019-11-24 16:05:23
回答 3查看 407关注 0票数 2

如何检测InvalidOperationException类型

下面是内部异常消息:

System.InvalidOperationException: ExecuteNonQuery需要一个开放和可用的连接。连接的当前状态已关闭。

我需要准确地检测这类异常来处理它。我可以知道它的HResult号码或异常代码吗?或者另一种方式?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-27 11:50:28

这段代码可能会有帮助

代码语言:javascript
复制
try
{
    //your code here...
}
catch (Exception exception) when (exception.InnerException is InvalidOperationException)
{
    var exceptionMessage = "ExecuteNonQuery requires an open and available Connection";
    if (exception.Message.Contains(exceptionMessage) || exception.InnerException.Message.Contains(exceptionMessage))
    {
        //handle it...
    }
}
票数 1
EN

Stack Overflow用户

发布于 2019-11-24 16:50:26

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

代码语言:javascript
复制
try
{
    // Normal workflow up here
}
catch (System.InvalidOperationException ioex)
{
    // Handle InvalidOperationException
    Console.WriteLine(ioex.StackTrace);
}
catch (System.Exception ex)
{
    // Handle generic exception
    Console.WriteLine(ex.StackTrace);
}

但是,您的问题表明这对您不起作用,因为您提到了一个内部异常。在这种情况下,您可能需要对内部异常执行一些类型检查,如下所示:

代码语言:javascript
复制
try
{
    // Normal workflow up here
}
catch (System.Exception ex)
{
    if (ex.InnerException is InvalidOperationException) 
    { 
        // Handle InvalidOperationException
    }
    else 
    { 
        // Handle generic exception
    } 

    Console.WriteLine(ex.StackTrace);
}
票数 0
EN

Stack Overflow用户

发布于 2019-11-24 17:54:09

你能给我们提供更多的背景吗?这样我们就更容易回答你的问题了。

然而,如果我对你的理解是正确的,你就会尝试去处理一些内在的例外。在C# 6中,有可用的异常过滤器。有关异常筛选器的详细信息,请参阅异常过滤器

文档还提供了一个示例。

在特定情况下,可以使用异常筛选器,如下所示:

代码语言:javascript
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59019614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档