E4168

E4168#

Compiler diagnostic name: error_poly_unsupported.

此位置不支持错误多态。

raise? 标注表示函数具有错误多态:它可以传播回调或其他多态操作的错误行为。MoonBit 只在特定的函数位置支持这种形式。它不是一个可以在任意函数类型处使用的通用类型标注。

错误示例#

下面的顶层值在函数类型标注中使用了 raise?

///|

///|
let _callback : () -> Unit raise? = fn() { () }

MoonBit 会报告一个错误。

建议#

当回调不会抛出错误时,使用不抛错的函数类型;如果函数可能抛错,则在受支持的函数声明中使用普通的具体 raise 标注:

///|

///|
let _callback : () -> Unit = fn() { () }