首页 > 解决方案 > SML 问题:我可以在函数中将异常作为参数传递吗?

问题描述

我可以在 sml 函数中将异常作为参数传递吗?

如果是这样,它会是这样的吗?

foo(exc: exception) =
    ...

标签: sml

解决方案


是的,您可以,但类型是exn,而不是exception

- exception E;
exception E
- E;
val it = E(-) : exn
- exception Q;
exception Q
- fun f x e = if x > 0 then x else raise e;
val f = fn : int -> exn -> int
- f 1 E;
val it = 1 : int
- (f 0 E) handle E => 23 | Q => 49;
val it = 23 : int
- (f 0 Q) handle E => 23 | Q => 49;
val it = 49 : int

但它是否对任何事情有用是另一回事。


推荐阅读