使用表达式树工厂方法表示没有异常变量或过滤器的 try..catch

我应该调用哪个工厂方法System.Linq.Expressions.Expression来创建表达式树——更具体地说,是一个CatchBlock实例——它代表catch以下 C# 代码中的:


try {

    // ...

} catch {

    // ...

}

Catch方法的所有重载似乎都需要一个异常类型——等效于此:


catch (Exception) {

    // ...

}

和/或ParameterExpression将绑定到异常的 a - 等同于:


catch (Exception ex) {

    // ...

}

传递null到第一个参数(并转换为Type以避免歧义):


// using static System.Linq.Expressions.Expression


Catch((Type)null, Constant(true));

导致ArgumentNullException。


MakeCatchBlock方法具有相同的行为


叮当猫咪
浏览 82回答 1
1回答

慕姐4208626

try {...} catch {...}捕获从非 .Net 组件抛出的异常并因此不继承的用法System.Exception是错误的,因为 CLR 自动将此类异常包装为RuntimeWrappedException显然继承的异常System.Exception- 因此您也可以使用try {...} catch(Exception e) {...}捕获异常。因此,没有必要try {...} catch {...}单独处理 plain ,try {...} catch (Exception e) {...}因为它们都会捕获所有异常。
打开App,查看更多内容
随时随地看视频慕课网APP