Zum Inhalt springen

Fehlerbehandlung

Ein Rust-Programmierer entwirft eine Bibliothek zum Schreiben von Kommandozeilen-Schnittstellen (CLI). Als Teil dieser Bibliothek implementiert er eine Funktion, um vom Benutzer bereitgestellte Kommandozeilen-Flags zu parsen. Welche Implementierung wäre für diesen Anwendungsbereich am besten geeignet?

fn parse_flag_v1(flag: &str) -> Result<String, String> {
match flag.strip_prefix("--") {
Some(no_dash) => Ok(no_dash.to_string()),
None => Err(format!("Invalid flag {flag}"))
}
}
fn parse_flag_v2(flag: &str) -> String {
match flag.strip_prefix("--") {
Some(no_dash) => no_dash.to_string(),
None => panic!("Invalid flag {flag}")
}
}

Hier würde der Programmierer wahrscheinlich einen wiederherstellbaren Fehler (den Result-Typ) verwenden wollen. Wenn ein CLI-Benutzer ein falsch formatiertes Flag übergibt, möchte die CLI-Bibliothek möglicherweise zusätzliche Hilfe anbieten, wie z. B. die Anzeige der möglichen Flags. Ein panic! würde die Anwendung dazu zwingen, nur die panic-Nachricht anzuzeigen, und wäre wahrscheinlich eine schlechtere Benutzererfahrung.