#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入門[言語仕様から開発手法まで]」がおすすめです。

コメント

このブログの人気の投稿

#16 TypeScriptで学ぶ辞書型(マップ)の基本

#19 Goで学ぶテスト(単体テスト)の基本