zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Die Integer.parseInt() Methode wird eine Fehlermeldung ausgeben.

Crash!

Genauer gesagt, die Methode löst eine NumberFormatException aus, die das Java System behandelt und das dann ein Fehlerprotokoll ausgibt:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string "rats"
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at FahrenheitPanel$TempListener.actionPerformed(FahrenheitPanel.java:52)
         . . . . and so on . . . .

Der richtige Weg, um mit diesem Problem umzugehen, ist die Verwendung einer Fehlerbehandlung, Thema der Kapitel 80 und 81 (zur Zeit nur in der alten Version verfügbar). Hier ist die actionPerformed() Methode modifiziert worden, um mit fehlerhaften Input des Anwenders umzugehen. Werfen Sie einen Blick darauf, aber kümmern Sie sich nicht um die Details, bis Sie die oben genannten Kapitel gelesen haben.

  public void actionPerformed( ActionEvent evt)
  {
    String userIn = inFahr.getText() ;

    try
    {
      fahrTemp = Integer.parseInt( userIn ) ;
      celsTemp = convert( fahrTemp ) ;
      outCel.setText( celsTemp+"" );
    }

    catch ( Exception ex )
    {
      outCel.setText( "Re-enter F" );
    }

    repaint();
  }

Was im wesentlichen passiert ist, dass wenn irgend etwas in den drei Anweisungen nach try schief geht:

    try
    {
      fahrTemp = Integer.parseInt( userIn ) ;
      celsTemp = convert( fahrTemp ) ;
      outCel.setText( celsTemp+"" );
    }

eine Ausnahme (Exception) ausgelöst (thrown) wird. Dann wird der Block der auf catch folgt ausgeführt werden:

    catch ( Exception ex )
    {
      outCel.setText( "Re-enter F" );
    }

Dieser Block schreibt eine Fehlermeldung in das Output Textfeld.

FRAGE 8:

Betrachten Sie das oben stehende Fehlerprotokoll. Welchen String hat der Anwender eingegeben, der nicht in einen Integer konvertiert werden konnte?