Ausweichfunktion für Fehlerbehandlungen in Rost

Ausweichfunktion für Fehlerbehandlungen in Rost

Angenommen, Sie benötigen ein konkretes Fundament für Fehlerbehandlungen in Rost. Sie müssen die Options- und Ergebnistypen verstehen. Sie halten das Fundament für die Auswastung und erwarten Funktionen, die im Fehlerbehandlungen kritisch sind.

Lassen Sie uns sehen, ob wir in diesem Tutorial einen Sinn machen können.

Rostoptionstyp

Der Rostoptionstyp ist eine relativ „einfache“ Enum, die zur Herstellung der Möglichkeit der Abwesenheit verwendet wird.

Schauen Sie sich die folgende Optionssyntax an:

Aufzündungsoption
Keiner,
Einige (t),

Sie können feststellen, dass es zwei Varianten hat: etwas (einige) und nichts (keine). Die Fähigkeit, dem Compiler zu sagen, wie er mit der Möglichkeit der Abwesenheit umgeht, ist wichtig.

Kurz gesagt, denken Sie an den Optionstyp als ein Feld, das etwas oder nichts haben kann, als nicht beides.

Rost -Ergebnistyp

Der Ergebnistyp ist auch in der Standardbibliothek definiert. Die Syntax ist unten bereitgestellt:

Enum -Ergebnis
OK T),
Irr (e),

Es hat zwei Varianten: ok und ähm. Beachten Sie, dass es dem Optionstyp sehr ähnlich ist. Dies liegt daran, dass es sehr ähnlich funktioniert.

Im Gegensatz zum Optionstyp "erwartet" der Ergebnistyp jedoch die Möglichkeit eines Fehlers. Denken Sie auf diese Weise daran. Wenn Sie eine Operation ausführen, gibt es nur zwei Dinge, die passieren können, entweder der Betrieb ist erfolgreich, daher ok.

Oder die Operation fällt aus, und Sie erhalten einen Fehler. Daher entsteht die ERR -Variante. Wenn die Operation einen Fehler in Rost zurückgibt, ruft die ERR () -Variante die Panik auf! Makro und Ausgang.

Aber was hat das mit der Fehlerbehandlung zu tun??

Es gibt zwei Möglichkeiten, die Möglichkeit der Abwesenheit zu bewältigen. Das erste ist die explizite Handhabung mit dem Match -Operator, und das nächste ist die implizite Handhabung mit der Ausweichungsfunktion.

Der folgende Beispielcode zeigt die bereitgestellten Informationen:

#[DEAL (TEAD_CODE)]
fncheck_db (db: option)
// explizites Handle mit Übereinstimmung
Matchdb
Einige ("mysql") => println!("Server auf Port: 3306"),
Einige ("postgresql") => println!("Server auf Port: 5432")),
Einige (innere) => println!("Lass mich das überprüfen!!!")),
Keine => println!("Ein DB geben:"),


#[DEAL (TEAD_CODE)]
fndb (db: option)
// implizites Handle mit Auswaschung
Ifdb.uflap () == ""
// Panik, wenn keine
Panik!("Abgebrochen")


fnmain ()
letMysql = einige ("MySQL");
letPostgres = einige ("postgresql");
lass keine = keine;
check_db (MySQL);
check_db (postgres);
check_db (einige ("mongoDB"));
check_db (keine);
DB (einige ("MongoDB");
db (keine);

Das vorherige Beispiel verwendet zwei Funktionen, um die explizite und implizite Fehlerbehandlung in der None- und einigen Rückgabewerten zu veranschaulichen.

Der erste verwendet den Match -Operator, um verschiedene Fälle zu überprüfen, während der andere Auspacken verwendet. Wenn es keine empfängt, wird die Funktion in Panik geraten.

Der vorherige Code enthält die folgende Ausgabe:

Abschluss

Dieser Artikel überprüft die Fehlerbehandlung in der Rost -Programmiersprache. Dieser Prozess enthält die Auswbrieb und erwartet, dass Funktionen den Prozess abschließen. Darüber hinaus wurden der Rostoptionstyp und der Rost -Ergebnistyp besprochen. Wir hoffen, Sie haben diesen Artikel hilfreich gefunden. Weitere Tipps und Informationen finden Sie in anderen Linux -Hinweisartikeln.