Abort と Unwind

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、Rust コードのエラーを処理するために使用できるパニック戦略オプション abortunwind について検討します。

注: 実験でファイル名が指定されていない場合は、好きなファイル名を使用できます。たとえば、main.rs を使用して、rustc main.rs &&./main でコンパイルして実行できます。

abortunwind

前のセクションでは、エラーハンドリングメカニズム panic を説明しました。異なるコードパスは、panic 設定に基づいて条件付きでコンパイルできます。利用可能な現在の値は、unwindabort です。

以前のレモネードの例を基に、明示的にパニック戦略を使用して異なるコード行を実行します。

fn drink(beverage: &str) {
   // 糖分多い飲み物はあまり飲んではいけません。
    if beverage == "lemonade" {
        if cfg!(panic="abort"){ println!("This is not your party. Run!!!!");}
        else{ println!("Spit it out!!!!");}
    }
    else{ println!("Some refreshing {} is all I need.", beverage); }
}

fn main() {
    drink("water");
    drink("lemonade");
}

ここに、drink() を書き直して明示的に unwind キーワードを使用する別の例があります。

#[cfg(panic = "unwind")]
fn ah(){ println!("Spit it out!!!!");}

#[cfg(not(panic="unwind"))]
fn ah(){ println!("This is not your party. Run!!!!");}

fn drink(beverage: &str){
    if beverage == "lemonade"{ ah();}
    else{println!("Some refreshing {} is all I need.", beverage);}
}

fn main() {
    drink("water");
    drink("lemonade");
}

パニック戦略は、コマンドラインから abort または unwind を使用して設定できます。

rustc lemonade.rs -C panic=abort

まとめ

おめでとうございます!あなたは AbortUnwind の実験を完了しました。あなたの技術を向上させるために、LabEx でさらに多くの実験を行って練習してください。