Rustにおけるエラーハンドリング
unwrap()
エラー処理を省力する際はunwrap()関数を用いる。
実際のアプリケーションでは推奨されない。
エラーが発生した場合にプログラムを強制終了する。
let line = "35565"
let n: i64 = line.trim().parse().unwrap();expect()
unwrap()関数にエラー文を詳細に追加したい場合はexpect( ... )関数を用いる。
引き数にエラー発生時に表示する文を入れる。
let line = "35565"
let n: i64 = line.trim().parse().expect("lineをnへ代入時のparse失敗".to_string);Result<T, E>
実際のアプリケーションではResult型を使用する。
これは次のコードで定義されている。
pub enum Result<T, E> {
Ok(T),
Err(E),
}DartのジェネリクスTは成功したときの値、Eはエラーの場合の値が入る。
以下にコード例を示す。
fn divide(x: i32, y: i32) -> Result<i32, String> {
if y == 0 {
return Err("0で割ることはできません".to_string());
}
Ok(x / y)
}Result型の値を取り出す際にはmatchキーワードを使用する。
fn main() {
let result = divide(10, 2);
match result {
Ok(result) => println!("Result: {}", result),
Err(err) => println!("Error: {}", err),
}
}変数resultで得られた値がOk型ならmatchでOk型だった際の分岐へ移動する。
Err型ならばErr型であった際の分岐へ移動する。