#11 Rustで学ぶエラーハンドリングの基本
Rustのエラーハンドリングは、他の言語のような「例外」という仕組みを持たず、`Result`という型を使った独自の考え方が中心になります。この記事では、Rustにおけるエラーハンドリングの基本を解説します。
Result型という考え方
失敗する可能性がある処理は、`Result`という「成功か失敗かを表す型」を返します。
fn divide(a: i32, b: i32) -> Result<i32, String> {
if b == 0 {
return Err(String::from("0では割れません"));
}
Ok(a / b)
}
成功時は`Ok`、失敗時は`Err`という形で結果を包んで返します。
matchで結果を扱う
match divide(10, 0) {
Ok(result) => println!("結果: {}", result),
Err(message) => println!("エラー: {}", message),
}
?という便利な記号
Rustには、`Result`がエラーだった場合に、その場で関数の呼び出し元にエラーを伝えて処理を中断できる`?`という記号があります。
fn calculate() -> Result<i32, String> {
let result = divide(10, 0)?;
Ok(result)
}
Rustならではの注意点
他の言語の「エラーが起きても気づかずに進んでしまう」という問題を防ぐため、Rustは`Result`の中身を確認しない限り、警告を出す仕組みになっています。エラーの可能性を無視できない設計こそが、Rustの安全性を支えています。
まとめ
Rustのエラーハンドリングは`Result`型が中心で、`match`や`?`を使って結果を扱います。エラーの可能性を無視できない設計に慣れていきましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Rustをもっと学びたい方には「実践Rust入門[言語仕様から開発手法まで]」がおすすめです。
コメント
コメントを投稿