L'exception NumberFormatException est levée lorsque nous essayons de convertir une chaîne en une valeur numérique telle que float ou entier, mais que le format de la chaîne d'entrée n'est pas approprié ou illégal. Par format illégal, cela signifie que si vous essayez d'analyser une chaîne en un entier mais que la chaîne contient une valeur booléenne, elle est de format illégal. Par exemple, si nous essayons d’analyser une chaîne en entier mais que la chaîne est nulle.
C'est une exception non contrôlée. C'est une sous-classe de Exception d'argument illégal et met en œuvre le Sérialisable interface.
Constructeurs de NumberFormatException
Constructeur | Description |
---|---|
NumberFormatException() | Cela construit une NumberFormatException sans message détaillé spécifié. |
NumberFormatException (Chaîne s) | Cela construit une NumberFormatException avec un message spécifié détaillé dans la chaîne s. |
Exemple d'exception NumberFormatException
public class Example { public static void main(String[] args) { int a = Integer.parseInt(null); //throws Exception as //the input string is of illegal format for parsing as it is null. } }
Sortir:
Raisons courantes de NumberFormatException
Étant donné que NumberFormatException se produit en raison du format de chaîne inapproprié pour l’argument correspondant de la méthode qui lève l’exception, il peut y avoir différentes manières de procéder. Quelques-uns d'entre eux sont mentionnés comme suit-
- La chaîne d'entrée fournie peut être nulle.
Exemple- Integer.parseInt(null); - La chaîne d'entrée est peut-être vide-
Exemple- Integer.parseInt(''); - La chaîne d'entrée peut avoir un espace de fin.
Exemple- Integer.parseInt('123'); - La chaîne d'entrée peut avoir un espace de début.
Exemple- Integer.parseInt(' 123'); - La chaîne d'entrée peut être alphanumérique.
Exemple- Long.parseLong('b2'); - La chaîne d'entrée peut avoir une entrée qui peut dépasser la plage du type de données stockant la chaîne analysée.
Exemple- Integer.parseInt('135'); La valeur maximale possible d'un entier peut être 127, mais la valeur dans la chaîne est 135, ce qui est hors plage, cela lèvera donc l'exception. - Il peut y avoir une incompatibilité entre la chaîne d’entrée et le type de méthode utilisée pour l’analyse. Si vous fournissez la chaîne d'entrée telle que « 1.0 » et que vous essayez de convertir cette chaîne en une valeur entière, une exception NumberFormatException sera levée.
Exemple- Integer.parseInt('1..0');
Comment éviter NumberFormatException ?
L'exception NumberFormatException est essentiellement due au fait que la chaîne d'entrée n'est pas bien formatée ou illégale lors de l'analyse en une valeur numérique. Ainsi, pour éviter cette exception, la chaîne d'entrée fournie doit être bien formatée.
Pour avoir une chaîne valide et bien formatée, vérifiez tout d’abord si la chaîne d’entrée n’est pas nulle. Ensuite, vérifiez les espaces inutiles et supprimez-les tous, puis effectuez plusieurs vérifications pour vérifier que la chaîne d'argument correspond au type de la méthode que nous utilisons pour analyser la chaîne. Si la méthode est ParseInt(), vérifiez que la chaîne a une valeur entière et de même pour toutes les autres méthodes, effectuez les vérifications requises.
Afin d'empêcher un programme Java de générer une NumberFormatException, il est toujours judicieux de placer les lignes de code pouvant lancer cette exception dans un bloc try-catch, comme indiqué ci-dessous.
public class NumberFormatExceptionExample { private static final String inputString = '123.33'; public static void main(String[] args) { try { int a = Integer.parseInt(inputString); }catch(NumberFormatException ex){ System.err.println('Invalid string in argumment'); //request for well-formatted string } } }