E0026

E0026#

提示

The syntax of catch! is deprecated.

模式匹配是完整的,因此使用 catch! 是无用的。在 MoonBit 中,当在 try 块中只会引发一个错误类型时,编译器将知道这个错误类型是唯一会被捕获的。因此,在这种情况下,不需要使用 catch!

错误示例#

///|
suberror E

///|
fn f() -> Unit raise E {
  raise E
}

///|
fn g() -> Unit raise {
  f() catch! {
    E => raise E
  }
}

///|
fn main {
  g() catch {
    _ => println("Error")
  }
}

建议#

移除 catch! 中的 !

///|
suberror E

///|
fn f() -> Unit raise E {
  raise E
}

///|
fn g() -> Unit raise {
  f() catch {
    E => raise E
  }
}

///|
fn main {
  g() catch {
    _ => println("Error")
  }
}