C # - Parse-Ausnahme fehlgeschlagen?

8

Ich schreibe ein Programm in C #, und ich möchte Ausnahmen durch die Konvertierung von "" (null) zu int. Wie lautet der Name der Ausnahme?

BEARBEITEN: Ich bin mir nicht sicher, ob ich hier den vollständigen Code zeigen kann ... Aber ich bin sicher, dass Sie nicht den vollständigen Code benötigen, also:

%Vor%     
Gilad Naaman 29.07.2010, 20:30
quelle

10 Antworten

27

Wenn Sie es vermeiden können, codieren Sie nicht nach der Ausnahme!

Der Name der Ausnahme, nach der Sie suchen, heißt FormatException .

Es wäre jedoch schlauer, zuerst eine TryParse für das Objekt, das Sie analysieren möchten, zu machen, z. B.

%Vor%     
George Johnston 29.07.2010, 20:33
quelle
13

Sie erhalten eine FormatException , wenn eine Analyse fehlschlägt. Warum nicht stattdessen int.TryParse verwenden?

    
Steve Danner 29.07.2010 20:32
quelle
9

Als Randnotiz können Sie die Ausnahme auf einfache Weise herausfinden, indem Sie sie ausführen. Wenn Sie auf den Fehler stoßen, erhalten Sie den Namen der Ausnahme.

    
Alec Sanger 29.07.2010 20:32
quelle
6

Schauen wir uns in der Dokumentation an (was eine viel sauberere Lösung ist, die "versucht" es aus "):

  

public static int Parse (Zeichenfolge s)

     

[...]

     

Ausnahmen:

     
  • ArgumentNullException : s ist null.
  •   
  • FormatException : s hat nicht das richtige Format.
  •   

Dies sollte Ihre Frage beantworten. Wie andere bereits erwähnt haben, stellen Sie vielleicht die falsche Frage und möchten Int32.TryParse verwenden stattdessen.

    
Heinzi 29.07.2010 21:41
quelle
1

Hängt davon ab, was Sie für die Konvertierung verwenden. Zum Beispiel wirft int.Parse ArgumentNullException , FormatException , oder OverflowException . Quoten sind es ArgumentNullException , die Sie suchen, aber wenn das eine leere Zeichenfolge anstelle einer Nullreferenz ist, wird es wahrscheinlich FormatException

sein     
Randolpho 29.07.2010 20:33
quelle
0

Wenn die Ausnahme ausgelöst wird, können Sie ihren Typ erkennen. Die schlaue Sache zu tun ist, diesen Fall zu behandeln und eine anmutige Nachricht an Ihren Benutzer anzuzeigen, wenn möglich.

    
Achilles 29.07.2010 20:33
quelle
0
___ answer3366698 ___

Sie erhalten eine FormatException , wenn eine Analyse fehlschlägt. Warum nicht stattdessen int.TryParse verwenden?

    
___ qstntxt ___

Ich schreibe ein Programm in C #, und ich möchte Ausnahmen durch die Konvertierung von "" (null) zu int. Wie lautet der Name der Ausnahme?

BEARBEITEN: Ich bin mir nicht sicher, ob ich hier den vollständigen Code zeigen kann ... Aber ich bin sicher, dass Sie nicht den vollständigen Code benötigen, also:

%Vor%     
___ qstnhdr ___ C # - Parse-Ausnahme fehlgeschlagen? ___ answer3366703 ___

Wenn Sie es vermeiden können, codieren Sie nicht nach der Ausnahme!

Der Name der Ausnahme, nach der Sie suchen, heißt System.InvalidCastException .

Es wäre jedoch schlauer, zuerst eine %code% für das Objekt, das Sie analysieren möchten, zu machen, z. B.

%Vor%     
___ answer3367171 ___

Schauen wir uns in der Dokumentation an (was eine viel sauberere Lösung ist, die "versucht" es aus "):

  

public static int Parse (Zeichenfolge s)

     

[...]

     

Ausnahmen:

     
  • %code% : s ist null.
  •   
  • %code% : s hat nicht das richtige Format.
  •   

Dies sollte Ihre Frage beantworten. Wie andere bereits erwähnt haben, stellen Sie vielleicht die falsche Frage und möchten Int32.TryParse verwenden stattdessen.

    
___ answer3366707 ___

Wenn die Ausnahme ausgelöst wird, können Sie ihren Typ erkennen. Die schlaue Sache zu tun ist, diesen Fall zu behandeln und eine anmutige Nachricht an Ihren Benutzer anzuzeigen, wenn möglich.

    
___ answer336710 ___

Sie suchen wahrscheinlich nach einem %code% , obwohl ich denke, das hängt davon ab, wie Sie die Konvertierung durchführen.

Das heißt, wäre es nicht schneller / einfacher, einfach den Code zu schreiben und es selbst zu versuchen? Insbesondere, weil Sie wie nicht angegeben haben, führen Sie die Konvertierung durch.

    
___ answer3366709 ___

Hängt davon ab, was Sie für die Konvertierung verwenden. Zum Beispiel wirft %code% %code% , %code% , oder %code% . Quoten sind es %code% , die Sie suchen, aber wenn das eine leere Zeichenfolge anstelle einer Nullreferenz ist, wird es wahrscheinlich %code%

sein     
___ answer3366715 ___

Probieren Sie es einfach aus. Dieser Code:

%Vor%

löst eine FormatException aus.

    
___ answer3366699 ___

Als Randnotiz können Sie die Ausnahme auf einfache Weise herausfinden, indem Sie sie ausführen. Wenn Sie auf den Fehler stoßen, erhalten Sie den Namen der Ausnahme.

    
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ answer336717 ___

Ausnahmen sind teuer. Sie sollten int.TryParse verwenden. Wenn die Konvertierung fehlschlägt, wird der Boolesche Wert false zurückgegeben.

    
___ answer3367142 ___

Convert.ToInt32 löst keine Formatausnahme ("Eingabezeichenfolge ist nicht im richtigen Format") in einer Nullzeichenfolge aus. Sie können das verwenden, wenn es akzeptabel ist, dass das Ergebnis für eine Null-Zeichenkette eine 0 ist. (kotzt immer noch auf einer leeren Schnur)

%Vor%

Wenn Sie jedoch eine Nummer in der Box erwarten, sollten Sie TryParse (wie vorgeschlagen) oder einen Validator verwenden, um den Benutzer darüber zu informieren, dass er eine Nummer eingeben muss.

    
___
Rob 29.07.2010 20:33
quelle
0

Probieren Sie es einfach aus. Dieser Code:

%Vor%

löst eine FormatException aus.

    
PetPaulsen 29.07.2010 20:34
quelle
0
___ answer3366698 ___

Sie erhalten eine FormatException , wenn eine Analyse fehlschlägt. Warum nicht stattdessen int.TryParse verwenden?

    
___ qstntxt ___

Ich schreibe ein Programm in C #, und ich möchte Ausnahmen durch die Konvertierung von "" (null) zu int. Wie lautet der Name der Ausnahme?

BEARBEITEN: Ich bin mir nicht sicher, ob ich hier den vollständigen Code zeigen kann ... Aber ich bin sicher, dass Sie nicht den vollständigen Code benötigen, also:

%Vor%     
___ qstnhdr ___ C # - Parse-Ausnahme fehlgeschlagen? ___ answer3366703 ___

Wenn Sie es vermeiden können, codieren Sie nicht nach der Ausnahme!

Der Name der Ausnahme, nach der Sie suchen, heißt %code% .

Es wäre jedoch schlauer, zuerst eine %code% für das Objekt, das Sie analysieren möchten, zu machen, z. B.

%Vor%     
___ answer3367171 ___

Schauen wir uns in der Dokumentation an (was eine viel sauberere Lösung ist, die "versucht" es aus "):

  

public static int Parse (Zeichenfolge s)

     

[...]

     

Ausnahmen:

     
  • %code% : s ist null.
  •   
  • %code% : s hat nicht das richtige Format.
  •   

Dies sollte Ihre Frage beantworten. Wie andere bereits erwähnt haben, stellen Sie vielleicht die falsche Frage und möchten Int32.TryParse verwenden stattdessen.

    
___ answer3366707 ___

Wenn die Ausnahme ausgelöst wird, können Sie ihren Typ erkennen. Die schlaue Sache zu tun ist, diesen Fall zu behandeln und eine anmutige Nachricht an Ihren Benutzer anzuzeigen, wenn möglich.

    
___ answer336710 ___

Sie suchen wahrscheinlich nach einem %code% , obwohl ich denke, das hängt davon ab, wie Sie die Konvertierung durchführen.

Das heißt, wäre es nicht schneller / einfacher, einfach den Code zu schreiben und es selbst zu versuchen? Insbesondere, weil Sie wie nicht angegeben haben, führen Sie die Konvertierung durch.

    
___ answer3366709 ___

Hängt davon ab, was Sie für die Konvertierung verwenden. Zum Beispiel wirft %code% %code% , %code% , oder %code% . Quoten sind es %code% , die Sie suchen, aber wenn das eine leere Zeichenfolge anstelle einer Nullreferenz ist, wird es wahrscheinlich %code%

sein     
___ answer3366715 ___

Probieren Sie es einfach aus. Dieser Code:

%Vor%

löst eine FormatException aus.

    
___ answer3366699 ___

Als Randnotiz können Sie die Ausnahme auf einfache Weise herausfinden, indem Sie sie ausführen. Wenn Sie auf den Fehler stoßen, erhalten Sie den Namen der Ausnahme.

    
___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ answer336717 ___

Ausnahmen sind teuer. Sie sollten int.TryParse verwenden. Wenn die Konvertierung fehlschlägt, wird der Boolesche Wert false zurückgegeben.

    
___ answer3367142 ___

Convert.ToInt32 löst keine Formatausnahme ("Eingabezeichenfolge ist nicht im richtigen Format") in einer Nullzeichenfolge aus. Sie können das verwenden, wenn es akzeptabel ist, dass das Ergebnis für eine Null-Zeichenkette eine 0 ist. (kotzt immer noch auf einer leeren Schnur)

%Vor%

Wenn Sie jedoch eine Nummer in der Box erwarten, sollten Sie TryParse (wie vorgeschlagen) oder einen Validator verwenden, um den Benutzer darüber zu informieren, dass er eine Nummer eingeben muss.

    
___
Ashley Grenon 29.07.2010 20:34
quelle
0

Convert.ToInt32 löst keine Formatausnahme ("Eingabezeichenfolge ist nicht im richtigen Format") in einer Nullzeichenfolge aus. Sie können das verwenden, wenn es akzeptabel ist, dass das Ergebnis für eine Null-Zeichenkette eine 0 ist. (kotzt immer noch auf einer leeren Schnur)

%Vor%

Wenn Sie jedoch eine Nummer in der Box erwarten, sollten Sie TryParse (wie vorgeschlagen) oder einen Validator verwenden, um den Benutzer darüber zu informieren, dass er eine Nummer eingeben muss.

    
Nikki9696 29.07.2010 21:36
quelle

Tags und Links