2016-12-09 3 views
-1

ich den Code unten mit Eclipse schrieb:warum die ParseException erscheint, wenn die Verwendung Simple

String d = "2014-6-1 21:05:36"; 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
Date date =sdf.parse(d);   
System.out.print(date); 

und die Linie 4 löst eine Unhandled exception type ParseException.

Aber wenn ich schreibe:

try { 
    String d = "2014-6-1 21:05:36"; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
    Date date =sdf.parse(d);  
    System.out.print(date); 
} catch(ParseException e) { 
    e.printStackTrace(); 
    System.out.print("you get the ParseException"); 
} 

oder hinzufügen throws ParseException zu Beginn der Hauptmethode

public static void main(String[] args) throws ParseException { 
    String d = "2014-6-1 21:05:36"; 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
    Date date =sdf.parse(d);  
    System.out.print(date); 
} 

Sie funktionieren alle gut ... Was ist falsch an meinem Code? Ich verwende die Methode printStackTrace() im catch-Block, aber warum kann ich die ParseException nicht sehen?

+0

behandelt werden genannt worden ist, muss es sagt Ihnen, dass Simple der Parse sagt, dass es diese Ausnahme werfen könnte. es bedeutet nicht, dass es getan hat. Der Compiler möchte, dass Sie entweder damit umgehen oder erkennen, dass es eine Möglichkeit ist, indem Sie Ihre Methode als Quelle dieser Ausnahme markieren. – Jonathan

+0

Sie haben ein anderes Format in Fall 2, in dem Sie die Ausnahme drucken. –

+0

Ich bin ziemlich sicher, dass Ihr dritter Auszug dort _doesn_ gut funktioniert. –

Antwort

1

Es geht nicht darum, dass Sie tatsächlich eine Ausnahme bekommen. Es ist jedoch möglich, dass Ihr String im falschen Format ist (was nicht der Fall ist). In diesem Fall würden Sie eine Ausnahme bekommen.

Der Compiler möchte also, dass Sie diese Ausnahme behandeln. Entweder musst du es erneut versuchen oder fangen. ABER: Sie werden nicht wirklich die Ausnahme mit Ihrem Code bekommen. Es ist nur für den Fall, dass es jemals eine Ausnahme gibt.

0

In allen IDE (Integrierte Entwicklungsumgebung), zeigen Editor den Kompilierungstyp Fehler, der zur Kompilierungszeit nicht aufgelöst werden wird.

Was Sie beobachten das Verhalten der IDE in Ihrem Fall, bei sdf.parse(d); bedeutet, dass es eine Parse-Ausnahme zur Laufzeit werfen kann, also müssen Sie damit umgehen. Andernfalls wird das Programm abgestürzt sein.

Im zweiten Code-Schnipsel von Ihnen, es wird ein Parse Ausnahme fangen, wenn aufgetreten und zeigen Sie die Ausnahme e.printStackTrace(); für Ihre Aufzeichnung und Code nicht, dh exit(0) oder exit(1) mit Fehler abstürzen, more

Während in den letzten Code Schnipsel von dir, Methode wurde deklariert, dass es eine Ausnahme auslösen kann, also wenn es von einer anderen Quelle aufgerufen wird, sollte dies behandelt werden, sagen Versuch fangen.

Sie können jede der beiden Lösungen verwenden, es ist nur Ihre Wahl.

mehr

finden Sie die Methodensignatur in SimpleDateFormat

public Date parse(String source) throws ParseException 

So wirft dies zeigt, dass, wenn diese Methode das

Verwandte Themen