JavaRush /Java blogi /Random-UZ /Java tilidagi istisnolar haqidagi eng yaxshi 10 ta savol
raynn
Daraja
Нижний Новгород

Java tilidagi istisnolar haqidagi eng yaxshi 10 ta savol

Guruhda nashr etilgan
Maqolada Java-dagi istisnolar haqida eng ko'p beriladigan 10 ta savol tasvirlangan. Java-dagi istisnolar haqidagi eng yaxshi 10 ta savol - 1

1. Tekshiriladigan va tekshirilmaydigan

Muxtasar qilib aytganda, tekshirilgan istisnolar usul tanasida aniq tutilishi yoki usulning otish bo'limida e'lon qilinishi kerak. Tekshirilmagan istisnolar hal qilib bo'lmaydigan muammolar tufayli yuzaga keladi, masalan, 0 ga bo'linish, null ko'rsatkich va boshqalar. Belgilangan istisnolar ayniqsa muhimdir, chunki siz API-dan foydalanadigan boshqa ishlab chiquvchilar istisnolarni qanday hal qilishni bilishlarini kutasiz. Masalan, IOException tez-tez ishlatiladigan tekshiriladigan istisno, RuntimeException esa tekshirilmagan istisno hisoblanadi. Batafsil o'qishdan oldin Java-dagi ierarxik istisno diagrammasini tekshiring .

2. Istisnolarni hal qilishning eng yaxshi usuli

Agar istisnoni to'g'ri hal qilish mumkin bo'lsa, uni qo'lga olish kerak, aks holda uni yuborish kerak.

3. Nima uchun tryda aniqlangan o'zgaruvchilar catch yoki finalda ishlatilmaydi?

Quyidagi kod qismida try blokida e'lon qilingan satrni catch blokida ishlatib bo'lmaydi. Bu kod kompilyatsiya qilinmaydi.
try {
	File file = new File("path");
	FileInputStream fis = new FileInputStream(file);
	String s = "inside";
} catch (FileNotFoundException e) {
	e.printStackTrace();
	System.out.println(s);
}
Sababi, try blokida istisno qayerga tashlanganligi noma'lum. Istisno ob'ekt e'lon qilinishidan oldin tashlangan bo'lishi mumkin. Va bu misol uchun to'g'ri.

4. Nima uchun Double.parseDouble(null) va Integer.parseInt(null) har xil istisnolarni chiqaradi?

To'g'ri, ular turli xil istisnolarni keltirib chiqaradi. Bu JDK muammosi. Ular oddiygina turli odamlar tomonidan ishlab chiqilgan va siz bu haqda ko'p tashvishlanmasligingiz kerak.
Integer.parseInt(null);
// вызывает java.lang.NumberFormatException: null

Double.parseDouble(null);
// вызывает java.lang.NullPointerException

5. Java tilidagi asosiy ish vaqti istisnolari

Mana ulardan bir nechtasi:
IllegalArgumentException
ArrayIndexOutOfBoundsException
Ular shart bajarilmaganda if iborasida ishlatilishi mumkin, masalan:
if (obj == null) {
   throw new IllegalArgumentException("obj не может быть равно null");

6. Bitta catch blokida bir nechta istisnolarni ushlash mumkinmi?

Javob: HA. Ushbu istisnolarning sinflari sinf merosi ierarxiyasini bir xil superklassgacha kuzatish mumkin ekan, faqat o'sha yuqori sinfdan foydalanish mumkin.

7. Konstruktor istisnolarni tashlay oladimi?

Javob: HA. Konstruktor faqat maxsus turdagi usuldir. Mana kod misoli.

8. Yakuniy blokda istisnolarni tashlash

Aslida, siz buni qonuniy ravishda qilishingiz mumkin:
public static void main(String[] args) {
	File file1 = new File("path1");
	File file2 = new File("path2");
	try {

		FileInputStream fis = new FileInputStream(file1);
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} finally {
		try {
			FileInputStream fis = new FileInputStream(file2);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
	}
}
Ammo kodni o'qish qobiliyatini saqlab qolish uchun siz o'rnatilgan blokni try-catchyangi usul sifatida e'lon qilishingiz va ushbu usulga qo'ng'iroqni blokga kiritishingiz kerak finally.
public static void main(String[] args) {
	File file1 = new File("path1");
	File file2 = new File("path2");
	try {

		FileInputStream fis = new FileInputStream(file1);
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} finally {
		methodThrowException();
	}
}

9. Finally blokida return dan foydalanish mumkinmi?

Ha mumkin.

10. Nima uchun ishlab chiquvchilar istisnolarni jimgina hal qilishadi?

Masalan, bunday kod qismlari ko'pincha paydo bo'ladi. Agar istisnolardan to'g'ri ishlov berish juda muhim bo'lsa, nega ishlab chiquvchilar buni shu tarzda yozishni davom ettirmoqdalar?
try {
     ...
} catch(Exception e) {
     e.printStackTrace();
}
Buni e'tiborsiz qoldirish eng oson. Ammo bu tez-tez bajarilsa ham, bu to'g'ri ekanligini anglatmaydi. Havolalar:
  1. Java-da belgilanmagan istisnolar
  2. Java-da ierarxik istisno daraxtining ildizi
  3. Stackoverflowdagi istisnolar haqida savollar
Asl maqola
Yana nimani o'qish kerak:

Java tilidagi istisnolar

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION