![]() |
1
12
正如前面提到的,你通常会使用
我想这就是你不需要的原因
|
![]() |
2
6
正交性?正如您所展示的,您可以简单地将一次尝试嵌套在一次尝试中。(我想这就是IL级别的情况。) 也就是说,在未来的语言版本中,我们可能会考虑使用finally。 就我个人而言,我只需要几次,但当你确实需要它时,需要做额外的嵌套/缩进有点麻烦。一般来说,我发现我很少编写异常处理代码,通常只是一个或另一个(例如,最终恢复不变或其他事务语义,或在应用程序顶部附近“catch”记录异常或显示用户诊断)。 但是我认为对于语言设计来说没有太多的东西需要“阅读”。 |
![]() |
3
2
因为伟大的细节在 Expert .NET 2.0 IL Assembler Serge Lidin 参见:第14章,托管异常处理
第300页 尝试/捕获使用 过错 处理程序和try/finally使用 最后 处理程序。 见: ILGenerator.BeginFaultBlock Method
因此,所有的.NET语言都可以考虑使用句法surgar,因为f_是如此的新,所以它们还没有实现它。没有伤害,没有犯规。 |
![]() |
4
1
我将在回答中澄清我的意见。
|
![]() |
5
0
我想F可能是“反对”异常处理的。为了.NET的互操作性,它必须支持它们,但基本上, 函数编程中没有异常处理*。 . 抛出/捕获异常意味着执行甚至没有被类型系统注意到的“无处跳转”,这两种类型系统都从根本上违背了功能哲学。 可以使用纯函数(单元)代码来包装异常。所有错误都是通过值处理的,根据基础类型系统,并且没有跳跃/副作用。 而不是编写函数
这可能会引发任意的异常,您只需声明
这使得这一点通过其类型签名自动清除。 *这并不意味着我们不处理异常情况,它只是关于.NET/C++中异常处理的一种。 |
![]() |
Konvt · 标准库中异常构造函数参数类型问题 6 月前 |
![]() |
EarthTurtle · 调整泛型抛出迭代器的异常类型 12 月前 |
![]() |
ê¹ë¯¼ì¬ · 在六边形的建筑中,例外情况应该扔到哪里? 1 年前 |
|
tariqalr · 带有try-catch块的无限循环的编译和返回值 1 年前 |
![]() |
CheezGuy · Python尝试/不停止错误除外 1 年前 |