You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在C#中能否在同一个catch块中捕获多种异常类型?

在C#中捕获多种异常类型的正确写法

你写的ArgumentException || FormatException x这种语法是错误的,但C#确实支持在同一个catch块里捕获多种异常类型,具体分版本来看:

C# 6及以上版本(推荐写法)

可以直接用|分隔多个异常类型,写法如下:

try
{
    // 执行可能抛出异常的代码
}
catch (ArgumentException | FormatException ex)
{
    // 统一处理这两种异常的逻辑
}
catch (Exception ex)
{
    throw;
}

需要注意:

  • 用单竖线|分隔异常类型,不是双竖线||
  • 变量ex的类型是这些异常的共同基类(这里FormatException继承自ArgumentException,所以ex是ArgumentException类型),可以正常访问异常的公共属性和方法

C# 6之前的版本

没法直接在一个catch块捕获多种异常,只能拆分多个catch块,然后调用统一的处理方法:

try
{
    // 执行可能抛出异常的代码
}
catch (ArgumentException ex)
{
    HandleCommonException(ex);
}
catch (FormatException ex)
{
    HandleCommonException(ex);
}
catch (Exception ex)
{
    throw;
}

private void HandleCommonException(Exception ex)
{
    // 这里写两种异常的统一处理逻辑
}

内容的提问来源于stack exchange,提问作者user2405517

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:59:50