【发布时间】:2021-09-10 17:57:32
【问题描述】:
我目前有:
if (isCritical)
throw new CriticalException(a, b);
throw new FailException(a, b);
我想使用三元条件运算符,例如:
isCritical ? throw new CriticalException(a, b) : throw new FailException(a, b);
但我得到错误 'throw' 和 'throw' 之间没有隐式转换 这是否意味着不能在这里这样做还是我做错了?
【问题讨论】:
-
你不能在三元运算上使用不同的返回类型,你需要为此做一个 if 语句,或者将 CriticalException 和 FailException 转换为相同类型的“Exception”才能工作
-
@MestreDosMagros:您似乎在讨论
throw a? b: c,但问题是关于a? throw b: throw c -
@MestreDosMagros:是的,但在这里不适用。
new CriticalException()有一个类型。throw new CriticalException()没有。在两个分支中抛出相同的类型并不能解决问题。 -
@MestreDosMagros: 不...条件是
bool,但是三元的结果类型可以是任何东西,结果和/或替代不是true或@987654329 @. -
var ex = x ?新异常(“a”):新异常(“b”);扔前;
标签: c# asp.net-core exception .net-core