يتم طرح NumberFormatException عندما نحاول تحويل سلسلة إلى قيمة رقمية مثل عدد عشري أو عدد صحيح، ولكن تنسيق سلسلة الإدخال غير مناسب أو غير قانوني. يُقصد بالتنسيق غير القانوني أنه إذا كنت تحاول تحليل سلسلة إلى عدد صحيح ولكن السلسلة تحتوي على قيمة منطقية، فهي ذات تنسيق غير قانوني. على سبيل المثال - إذا حاولنا تحليل سلسلة إلى عدد صحيح ولكن السلسلة فارغة.
وهو استثناء لم يتم التحقق منه. إنها فئة فرعية من غير الشرعيين استثناء حجة وينفذ قابل للتسلسل واجهه المستخدم.
مُنشئي NumberFormatException
البناء | وصف |
---|---|
NumberFormatException() | يؤدي هذا إلى إنشاء NumberFormatException بدون رسالة تفصيلية محددة. |
NumberFormatException(سلسلة) | يؤدي هذا إلى إنشاء NumberFormatException برسالة محددة مفصلة في السلسلة s. |
مثال على 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. } }
انتاج:
الأسباب الشائعة لـ NumberFormatException
نظرًا لأن NumberFormatException يحدث بسبب التنسيق غير المناسب للسلسلة للوسيطة المقابلة للطريقة التي تطرح الاستثناء، فقد تكون هناك طرق مختلفة لذلك. نذكر القليل منها على النحو التالي:
- قد تكون سلسلة الإدخال المقدمة فارغة
مثال- Integer.parseInt(null); - قد تكون سلسلة الإدخال فارغة-
مثال- Integer.parseInt(''); - قد تحتوي سلسلة الإدخال على مسافة زائدة-
مثال- Integer.parseInt('123'); - قد تحتوي سلسلة الإدخال على مسافة بادئة-
مثال- Integer.parseInt('123'); - قد تكون سلسلة الإدخال أبجدية رقمية
مثال- Long.parseLong('b2'); - قد تحتوي سلسلة الإدخال على إدخال قد يتجاوز نطاق نوع البيانات الذي يخزن السلسلة التي تم تحليلها-
مثال- Integer.parseInt('135'); الحد الأقصى لقيمة عدد صحيح يمكن أن يكون 127، لكن القيمة الموجودة في السلسلة هي 135 وهي خارج النطاق، لذلك سيؤدي هذا إلى الاستثناء. - قد يكون هناك عدم تطابق بين سلسلة الإدخال ونوع الطريقة المستخدمة للتحليل. إذا قمت بتوفير سلسلة إدخال مثل '1.0' وحاولت تحويل هذه السلسلة إلى قيمة عددية، فسوف يؤدي ذلك إلى ظهور استثناء NumberFormatException.
مثال- Integer.parseInt('1..0');
كيفية تجنب NumberFormatException؟
يحدث NumberFormatException بشكل أساسي لأن سلسلة الإدخال غير منسقة بشكل جيد أو غير قانونية أثناء التحليل إلى قيمة رقمية. لذا، لتجنب هذا الاستثناء، يجب أن تكون سلسلة الإدخال المقدمة منسقة بشكل جيد.
للحصول على سلسلة صالحة ومنسقة بشكل جيد، عليك أولاً التحقق مما إذا كانت سلسلة الإدخال ليست فارغة. بعد ذلك، تحقق من وجود مسافات غير ضرورية وقم بقصها جميعًا بعد ذلك قم بإجراء عدة عمليات تحقق للتحقق من أن سلسلة الوسيطة تتطابق مع نوع الطريقة التي نستخدمها لتحليل السلسلة. إذا كانت الطريقة هي ParseInt()، فتأكد من أن السلسلة تحتوي على قيمة عددية، وبالمثل بالنسبة لجميع الطرق الأخرى، قم بإجراء الاختبارات المطلوبة.
من أجل منع برنامج Java من إنشاء NumberFormatException، من الممارسات الجيدة دائمًا تضمين سطور التعليمات البرمجية التي يمكنها طرح هذا الاستثناء في كتلة محاولة الالتقاط كما هو موضح أدناه-
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 } } }