Rust の Try-Catch ステートメントに相当する

Muhammad Adil 2022年6月21日
Rust の Try-Catch ステートメントに相当する

Rust は、ソフトウェアを開発するためのより安全で信頼性の高い方法を提供するプログラミング言語です。これは、他の言語のセキュリティの脆弱性につながる一般的なエラーを防ぐように設計されています。

Rust 言語は例外処理をサポートしていません。つまり、Rust には try-catch ステートメントがありません。

Rust に例外処理がないため、関数から例外がスローされることによるランタイムエラーの可能性が排除されます。これは、プログラムが続行せずにエラーが発生した時点で停止し、コードベースで他の問題を引き起こす可能性があるためです。

この記事では、try-catch ステートメントに相当する Rust について説明します。

Rust の try-catch ステートメントに相当する

Rust には、try-catch ステートメントに相当するものがたくさんあります。ただし、この記事では、最も近いものをいくつか説明します。

Rust で ? を使用する

Rust では、? を使用できます値を返すかどうかを指定する演算子。

? 演算子は Rust の重要な機能の 1つであり、さまざまな方法で使用できます。値が存在するかどうか、値が変数に割り当てられているかどうか、または式が true または false と評価されるかどうかを確認できます。

? 演算子は、Rust の try-catch ステートメントの代わりに使用することもできます。 ? 演算子は、そのパラメータとしてクロージャを取ります。

実行中にエラーが発生した場合に何が起こるかを心配することなく、クロージャを呼び出すことができます。

? オペレーターはエラーをキャッチし、エラーがなかった場合はクロージャーの値を返します。エラーがあった場合は、何が問題だったかを説明したエラータイプを返します。

例:

fn main() {
    let hello_tasks = || -> Result<(), HelloError> {
        hello_task_1()?;
        hello_task_2()?;
        hello_task_3()?;
        Ok(())
    };
    if let Err(_err) = hello_tasks() {
        println!("There's an error in your code, please correct it");
    }
}
enum HelloError {
    HelloTask1Error,
    HelloTask2Error,
    HelloTask3Error,
}
fn hello_task_1() -> Result<(), HelloError> {
    println!("Task No 1");
    Ok(())
}
fn hello_task_2() -> Result<(), HelloError> {
    println!("Task No 2");
    Err(HelloError::HelloTask2Error)
}
fn hello_task_3() -> Result<(), HelloError> {
    println!("task3");
    Ok(())
}

出力:

Task No 1
Task No 2
There's an error in your code, please correct it

上記のコードのライブデモンストレーションを確認するには、ここをクリックしてください。

著者: Muhammad Adil
Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook