E1026

E1026#

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

错误示例#

type! E

fn f() -> Unit!E {
  raise E
}

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

fn main {
  try {
    g!()
  } catch {
    _ => println("Error")
  }
}

建议#

移除 catch! 中的 !

type! E

fn f() -> Unit!E {
  raise E
}

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

fn main {
  try {
    g!()
  } catch {
    _ => println("Error")
  }
}