C# Language
Behandlung von FormatException beim Konvertieren von Zeichenfolgen in andere Typen
Suche…
String in Ganzzahl konvertieren
Es gibt verschiedene Methoden, um eine string explizit in eine integer konvertieren, z.
Convert.ToInt16();Convert.ToInt32();Convert.ToInt64();int.Parse();
Alle diese Methoden FormatException eine FormatException , wenn die Eingabezeichenfolge nicht numerische Zeichen enthält. Dafür müssen wir eine zusätzliche Ausnahmebehandlung ( try..catch ) schreiben, um sie in solchen Fällen zu behandeln.
Erklärung mit Beispielen:
Also sei unsere Eingabe:
string inputString = "10.2";
Beispiel 1: Convert.ToInt32()
int convertedInt = Convert.ToInt32(inputString); // Failed to Convert
// Throws an Exception "Input string was not in a correct format."
Hinweis: Gleiches gilt für die anderen genannten Methoden, nämlich - Convert.ToInt16(); und Convert.ToInt64();
Beispiel 2: int.Parse()
int convertedInt = int.Parse(inputString); // Same result "Input string was not in a correct format.
Wie umgehen wir das?
Wie bereits gesagt, benötigen wir für die Behandlung der Ausnahmen normalerweise einen try..catch wie unten gezeigt:
try
{
string inputString = "10.2";
int convertedInt = int.Parse(inputString);
}
catch (Exception Ex)
{
//Display some message, that the conversion has failed.
}
Aber die Verwendung von try..catch wird nicht überall eine gute Praxis, und es können einige Szenarien, in denen wir wollten geben 0 , wenn der Eingang nicht stimmt, (Wenn wir das obige Verfahren folgen müssen wir zuweisen 0 bis convertedInt aus der Fangblock). Um solche Szenarien zu handhaben, können wir eine spezielle Methode namens .TryParse() .
Die .TryParse() -Methode verfügt über eine interne Ausnahmebehandlung, die Ihnen die Ausgabe an den out Parameter gibt und einen booleschen Wert zurückgibt, der den Konvertierungsstatus angibt ( true wenn die Konvertierung erfolgreich war; false wenn sie fehlgeschlagen ist) Anhand des Rückgabewerts können wir den Konvertierungsstatus ermitteln. Schauen wir uns ein Beispiel an:
Verwendung 1: Speichern Sie den Rückgabewert in einer booleschen Variablen
int convertedInt; // Be the required integer
bool isSuccessConversion = int.TryParse(inputString, out convertedInt);
Wir können die Variable isSuccessConversion nach der Ausführung überprüfen, um den Konvertierungsstatus zu überprüfen. Wenn es falsch ist, ist der Wert von convertedInt 0 (keine Notwendigkeit, den Rückgabewert zu überprüfen, wenn 0 für einen Konvertierungsfehler gewünscht wird).
Verwendung 2: Überprüfen Sie den Rückgabewert mit if
if (int.TryParse(inputString, out convertedInt))
{
// convertedInt will have the converted value
// Proceed with that
}
else
{
// Display an error message
}
Verwendung 3: Ohne den Rückgabewert zu überprüfen, können Sie Folgendes verwenden, wenn Sie sich nicht für den Rückgabewert interessieren (konvertiert oder nicht, 0 ist in Ordnung)
int.TryParse(inputString, out convertedInt);
// use the value of convertedInt
// But it will be 0 if not converted