一般社団法人 全国個人事業主支援協会

COLUMN コラム

Rustには例外機能が存在しない。

そもそも例外とは

私が業務経験した中だとJava、Python、C#と多くの言語で存在している機能。
プログラムを実行した際に発生しうる特定エラーを検知し、プログラムを終了することなく処理を続行する。
構文としては以下のようなイメージ
try {
    hogehoge();
} catch Exception {
    fugafuga();
}
tryブロック内でエラーが発生した際に、プログラムを停止させることなくcatchブロック内の処理を実行して続行する。
Rustには回復可能、回復不可能なエラーと区別し扱う。
回復可能な例外はResult、回復不可能な例外にはpanic!マクロを使用する。

panic!マクロ

実行されると、標準では失敗メッセージを表示後、スタックを巻き戻し掃除、終了する。
Cargo.toml内に以下の様に記載すれば、巻き戻しを行うことなく、異常終了でOSへ引き渡すことが出来る。
[profile]
panic = ‘abort’

Result

Rustの標準で定義されている、enum
enum Result<T, E> {
    Ok(T),
    Err(E),
}
TとEはジェネリクス型になっており、プログラム成功時にOk(T)、失敗時にErr(E)を列挙子として返す。
The following two tabs change content below.

WATANABE REN

千葉県在住のエンジニアです。最近はPythonやってます。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア