NumberFormatException tiek izmests, kad mēs cenšamies pārvērst virkni skaitliskā vērtībā, piemēram, pludināt vai vesels skaitlis, bet ievades virknes formāts nav piemērots vai nelikumīgs. Ar nelegālu formātu tiek domāts, ka, ja mēģināt parsēt virkni līdz veselam skaitlim, bet virknē ir Būla vērtība, tas ir nelegālā formātā. Piemēram - ja mēs cenšamies parsēt virkni līdz veselam skaitlim, bet virkne ir nulle.
Tas ir nepārbaudīts izņēmums. Tā ir apakšklase IllegalArgumentException un īsteno Serializējams saskarne.
NumberFormatException konstruktori
Konstruktors | Apraksts |
---|---|
NumberFormatException() | Tas konstruē NumberFormatException bez norādīta detalizēta ziņojuma. |
Skaitļa formāta izņēmums (virkne) | Tādējādi tiek izveidots NumberFormatException ar detalizētu norādīto ziņojumu virknē s. |
NumberFormatException piemērs
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. } }
Izvade:
Biežākie NumberFormatException iemesli
Tā kā NumberFormatException rodas neatbilstoša virknes formāta atbilstošajam argumentam par metodi, kas rada izņēmumu, var būt dažādi veidi. Daži no tiem ir minēti šādi:
- Norādītā ievades virkne var būt null-
Piemērs- Integer.parseInt(null); - Ievades virkne var būt tukša-
Piemērs- Integer.parseInt(''); - Ievades virknes beigās var būt atstarpe-
Piemērs- Integer.parseInt('123'); - Ievades virknes sākumā var būt atstarpe-
Piemērs- Integer.parseInt(' 123'); - Ievades virkne var būt burtu un ciparu —
Piemērs- Long.parseLong('b2'); - Ievades virknei var būt ievade, kas var pārsniegt datu tipa diapazonu, kurā tiek glabāta parsētā virkne-
Piemērs- Integer.parseInt('135'); Maksimālā iespējamā veselā skaitļa vērtība var būt 127, bet vērtība virknē ir 135, kas ir ārpus diapazona, tāpēc tas radīs izņēmumu. - Var būt neatbilstība starp ievades virkni un parsēšanai izmantotās metodes veidu. Ja norādāt ievades virkni, piemēram, “1.0” un mēģināsit pārvērst šo virkni veselā skaitļa vērtībā, tiks parādīts NumberFormatException izņēmums.
Piemērs- Integer.parseInt('1..0');
Kā izvairīties no NumberFormatException?
NumberFormatException pamatā ir iemesls, jo ievades virkne nav pareizi formatēta vai ir nelikumīga, parsējot skaitliskā vērtībā. Tātad, lai izvairītos no šī izņēmuma, norādītajai ievades virknei ir jābūt labi formatētai.
Lai iegūtu derīgu un labi formatētu virkni, vispirms pārbaudiet, vai ievades virkne nav nulles. Pēc tam pārbaudiet, vai nav nevajadzīgu atstarpju, un izgrieziet tās visas. Pēc tam veiciet vairākas pārbaudes, lai pārbaudītu, vai argumentu virkne atbilst tās metodes veidam, kuru mēs izmantojam virknes parsēšanai. Ja metode ir ParseInt(), pārbaudiet, vai virknei ir vesela skaitļa vērtība, un tāpat visām pārējām metodēm veiciet vajadzīgās pārbaudes.
Lai Java programma neģenerētu NumberFormatException, vienmēr ir ieteicams iekļaut koda rindiņas, kas var iemest šo izņēmumu try-catch blokā, kā parādīts tālāk.
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 } } }