エラーを送出する場合は関数に throw を追加する
code:rust
enum MyError
Error1
Error2
end
code:rust
# エラーを送出する関数
# 同時に型を返すこともできる
fn throw_error(throw_err bool) bool??MyError
ret MyErr::Err("throw_err is true")
end
try 式と catch 節でエラーを捕捉する
再度 throw を用いることで再送出できる
? を用いてエラー伝搬を行う
code:rust
# エラーを捕捉する
fn catch_err(rethrow_err bool) throw MyErr
let ret_value = try throw_err(true)
catch(e MyErr)
if rethrow_err
# エラーを再送出
throw e
else
println("MyErr has been thrown.")
end
end
end
let ret_value2 = throw_err(true)?
end