Изузетак НумберФорматЕкцептион се ствара када покушамо да конвертујемо стринг у нумеричку вредност као што је флоат или цео број, али формат улазног низа није одговарајући или незаконит. Под недозвољеним форматом подразумева се да ако покушавате да рашчланите стринг на цео број, али стринг садржи логичку вредност, он је незаконитог формата. На пример - ако покушамо да рашчланимо стринг на цео број, али стринг је нулл.
То је непроверен изузетак. То је поткласа ИллегалАргументЕкцептион и спроводи Сериализабле интерфејс.
Конструктори за НумберФорматЕкцептион
Цонструцтор | Опис |
---|---|
НумберФорматЕкцептион() | Ово конструише изузетак НумберФорматЕкцептион без специфициране детаљне поруке. |
НумберФорматЕкцептион(Стринг с) | Ово конструише НумберФорматЕкцептион са детаљно наведеном поруком у стрингу с. |
Пример НумберФорматЕкцептион
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. } }
Излаз:
Уобичајени разлози за НумберФорматЕкцептион
Пошто се НумберФорматЕкцептион јавља због неодговарајућег формата стринга за одговарајући аргумент методе која избацује изузетак, могу постојати различити начини за то. Неки од њих су поменути на следећи начин -
- Улазни низ може бити нулл-
Пример- Интегер.парсеИнт(нулл); - Улазни низ може бити празан-
Пример- Интегер.парсеИнт(''); - Улазни низ можда има размак на крају -
Пример- Интегер.парсеИнт('123'); - Улазни низ можда има водећи размак-
Пример- Интегер.парсеИнт(' 123'); - Улазни низ може бити алфанумерички-
Пример- Лонг.парсеЛонг('б2'); - Улазни низ може имати улаз који може премашити опсег типа података који чува рашчлањени стринг-
Пример- Интегер.парсеИнт('135'); Максимална могућа вредност целог броја може бити 127, али вредност у низу је 135 што је ван опсега, тако да ће ово изазвати изузетак. - Можда постоји неслагање између улазног низа и типа методе која се користи за рашчлањивање. Ако наведете улазни низ као што је '1.0' и покушате да конвертујете овај стринг у целобројну вредност, то ће изазвати изузетак НумберФорматЕкцептион.
Пример- Интегер.парсеИнт('1..0');
Како избећи НумберФорматЕкцептион?
Изузетак НумберФорматЕкцептион је у основи узрокован зато што улазни низ није добро форматиран или нелегалан док се анализира у нумеричку вредност. Дакле, да би се избегао овај изузетак, понуђени низ за унос мора бити добро форматиран.
Да бисте имали исправан и добро форматиран стринг, прво проверите да ли улазни стринг није нула. Затим проверите да ли има непотребних размака и све их изрежите након тога проверите неколико провера да бисте проверили да ли низ аргумента одговара типу методе коју користимо за рашчлањивање стринга. Ако је метод ПарсеИнт(), проверите да ли стринг има целобројну вредност и исто тако за све друге методе извршите потребне провере.
Да би се спречило да Јава програм генерише НумберФорматЕкцептион, увек је добра пракса да се линије кода које могу да избаце овај изузетак приложе у блок три-цатцх као што је приказано испод-
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 } } }