在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
相关产品推荐
相关产品推荐

