E4168#
Compiler diagnostic name: error_poly_unsupported.
此位置不支持错误多态。
raise? 标注表示函数具有错误多态:它可以传播回调或其他多态操作的错误行为。MoonBit 只在特定的函数位置支持这种形式。它不是一个可以在任意函数类型处使用的通用类型标注。
错误示例#
下面的顶层值在函数类型标注中使用了 raise?:
///|
///|
let _callback : () -> Unit raise? = fn() { () }
MoonBit 会报告一个错误。
建议#
当回调不会抛出错误时,使用不抛错的函数类型;如果函数可能抛错,则在受支持的函数声明中使用普通的具体 raise 标注:
///|
///|
let _callback : () -> Unit = fn() { () }