E4120

E4120#

该函数应用可能会引发错误,但这些错误没有被处理。

当前 MoonBit 会将普通的未处理重新抛出模式报告为 E4122。本页面保留给较旧编译器输出使用;旧版编译器会针对已弃用的后缀错误处理语法报告 E4120。

在 MoonBit 中,程序员需要显式标注哪些函数可能引发错误。重新抛出错误的函数必须在签名中使用 raise 标注。若要让当前函数不抛出错误,请使用 try ... catch 处理错误,或使用 try? 将其物化为 Result[T, E] 值。

错误示例#

当前语法下已检查的错误示例请参阅 E4122

建议#

您可以为调用者添加标注,使其重新抛出错误:

///|
pub suberror ExampleError {
  Failed
}

///|
pub fn may_raise_error(input : Int) -> Unit raise ExampleError {
  if input == 42 {
    return
  }
  raise Failed
}

///|
pub fn caller() -> Unit raise ExampleError {
  may_raise_error(42)
}

或者使用 try? 将错误物化为 Result[T, E] 类型:

///|
pub fn materialize_error() -> Result[Unit, ExampleError] {
  try? may_raise_error(42)
}