Abort e Unwind

Beginner

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

Introdução

Neste laboratório, exploramos as opções de estratégia de pânico abort e unwind, que podem ser usadas para lidar com erros em código Rust.

Nota: Se o laboratório não especificar um nome de arquivo, você pode usar qualquer nome de arquivo que desejar. Por exemplo, você pode usar main.rs, compilar e executá-lo com rustc main.rs && ./main.

abort e unwind

A seção anterior ilustra o mecanismo de tratamento de erros panic. Diferentes caminhos de código podem ser compilados condicionalmente com base na configuração de pânico. Os valores atuais disponíveis são unwind e abort.

Com base no exemplo anterior da limonada, usamos explicitamente a estratégia de pânico para exercitar diferentes linhas de código.


fn drink(beverage: &str) {
   // Você não deve beber muitas bebidas açucaradas.
    if beverage == "lemonade" {
        if cfg!(panic="abort"){ println!("Esta não é a sua festa. Corra!!!!");}
        else{ println!("Cuspa fora!!!!");}
    }
    else{ println!("Um pouco de {} refrescante é tudo que preciso.", beverage); }
}

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

Aqui está outro exemplo, focando na reescrita de drink() e usando explicitamente a palavra-chave unwind.


#[cfg(panic = "unwind")]
fn ah(){ println!("Cuspa fora!!!!");}

#[cfg(not(panic="unwind"))]
fn ah(){ println!("Esta não é a sua festa. Corra!!!!");}

fn drink(beverage: &str){
    if beverage == "lemonade"{ ah();}
    else{println!("Um pouco de {} refrescante é tudo que preciso.", beverage);}
}

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

A estratégia de pânico pode ser definida a partir da linha de comando usando abort ou unwind.

rustc lemonade.rs -C panic=abort

Resumo

Parabéns! Você concluiu o laboratório Abort e Unwind. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.