Java >> Java Tutorial >  >> Java

So beheben Sie die Ausnahme für die illegale Formatkonvertierung in Java

Der IllegalFormatConversionException ist eine ungeprüfte Ausnahme in Java, die auftritt, wenn das Argument, das einem Formatbezeichner entspricht, einen inkompatiblen Typ hat. Seit dem IllegalFormatConversionException zur Laufzeit geworfen wird, muss es nicht in throws deklariert werden Klausel einer Methode oder eines Konstruktors.

 

Was verursacht die Ausnahme wegen unzulässiger Formatkonvertierung?

Die IllegalFormatConversionException wird ausgelöst, wenn ein inkompatibles Typargument an einen Formatbezeichner übergeben wird. Zum Beispiel %d Für den Formatbezeichner muss eine ganze Zahl übergeben werden, und wenn ein String wird stattdessen ein IllegalFormatConversionException übergeben wird geworfen.

 

Beispiele für die IllegalFormat-Konvertierungsausnahme

Hier ist ein Beispiel für IllegalFormatConversionException ausgelöst, wenn ein String wird an einen Formatbezeichner übergeben, der eine Ganzzahl erwartet:

public class IllegalFormatConversionExceptionExample {
    public static void main(String args[]) {
        System.out.printf("%d", "Hello World");
    }
}

Seit %d Der Formatbezeichner erwartet eine Ganzzahl und der tatsächliche Wert, der ihm übergeben wurde, war vom Typ String , löst das Ausführen des obigen Codes den IllegalFormatConversionException: aus

Exception in thread "main" java.util.IllegalFormatConversionException: d != java.lang.String
    at java.base/java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:4426)
    at java.base/java.util.Formatter$FormatSpecifier.printInteger(Formatter.java:2938)
    at java.base/java.util.Formatter$FormatSpecifier.print(Formatter.java:2892)
    at java.base/java.util.Formatter.format(Formatter.java:2673)
    at java.base/java.io.PrintStream.format(PrintStream.java:1209)
    at java.base/java.io.PrintStream.printf(PrintStream.java:1105)
    at IllegalFormatConversionExceptionExample.main(IllegalFormatConversionExceptionExample.java:3)

 

So beheben Sie IllegalFormatConversionException

Um den IllegalFormatConversionException zu vermeiden , sollte sichergestellt werden, dass das an einen Formatbezeichner übergebene Argument vom richtigen Typ ist. Wenn das übergebene Argument korrekt ist, sollte der Formatbezeichner überprüft werden, um sicherzustellen, dass er für das übergebene Argument korrekt ist, und gegebenenfalls korrigiert werden.

Im obigen Beispiel kann die Ausnahme durch Ersetzen von %d behoben werden Formatbezeichner mit dem String Formatbezeichner %s :

public class IllegalFormatConversionExceptionExample {
    public static void main(String args[]) {
        System.out.printf("%s", "Hello World");
    }
}

Das Ausführen des obigen Codes erzeugt wie erwartet die richtige Ausgabe:

Hello World

 


Java-Tag