JavaRush /Java Blog /Random-ID /10 Pertanyaan Teratas tentang Pengecualian di Java
raynn
Level 31
Нижний Новгород

10 Pertanyaan Teratas tentang Pengecualian di Java

Dipublikasikan di grup Random-ID
Artikel ini menjelaskan 10 pertanyaan paling umum tentang pengecualian di Java. 10 Pertanyaan Teratas tentang Pengecualian di Java - 1

1. Dapat diverifikasi dan tidak dapat diverifikasi

Singkatnya, pengecualian yang dicentang harus secara eksplisit ditangkap di badan metode atau dideklarasikan di bagian lemparan metode. Pengecualian yang tidak dicentang disebabkan oleh masalah yang tidak dapat diselesaikan, seperti pembagian dengan 0, penunjuk nol, dll. Pengecualian yang dicentang sangat penting karena Anda mengharapkan pengembang lain yang menggunakan API Anda mengetahui cara menangani pengecualian. Misalnya, IOException adalah pengecualian yang umum digunakan, sedangkan RuntimeException adalah pengecualian yang tidak dicentang. Sebelum membaca lebih lanjut, lihat Diagram Pengecualian Hierarki di Java .

2. Cara terbaik untuk menangani pengecualian

Jika pengecualian dapat ditangani dengan benar, maka harus ditangkap, jika tidak maka harus diteruskan.

3. Mengapa variabel yang ditentukan di try tidak dapat digunakan di catch atau akhirnya?

Pada potongan kode berikut, baris yang dideklarasikan di blok try tidak dapat digunakan di blok catch. Kode ini tidak dapat dikompilasi.
try {
	File file = new File("path");
	FileInputStream fis = new FileInputStream(file);
	String s = "inside";
} catch (FileNotFoundException e) {
	e.printStackTrace();
	System.out.println(s);
}
Alasannya adalah tidak diketahui di blok try mana pengecualian tersebut dilemparkan. Ada kemungkinan bahwa pengecualian diberikan sebelum objek dideklarasikan. Dan ini berlaku untuk contoh ini.

4. Mengapa Double.parseDouble(null) dan Integer.parseInt(null) memberikan pengecualian yang berbeda?

Benar, mereka memunculkan pengecualian yang berbeda. Ini adalah masalah JDK. Mereka hanya dirancang oleh orang yang berbeda, dan Anda tidak perlu terlalu mengkhawatirkannya.
Integer.parseInt(null);
// вызывает java.lang.NumberFormatException: null

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

5. Pengecualian runtime dasar di Java

Berikut ini beberapa di antaranya:
IllegalArgumentException
ArrayIndexOutOfBoundsException
Mereka dapat digunakan dalam pernyataan if ketika kondisinya tidak terpenuhi, seperti di sini:
if (obj == null) {
   throw new IllegalArgumentException("obj не может быть равно null");

6. Apakah mungkin untuk menangkap banyak pengecualian dalam satu blok tangkapan?

Jawabannya iya. Selama kelas pengecualian ini dapat ditelusuri hingga hierarki pewarisan kelas ke superkelas yang sama, hanya superkelas tersebut yang dapat digunakan.

7. Bisakah konstruktor memberikan pengecualian?

Jawabannya iya. Konstruktor hanyalah jenis metode khusus. Berikut adalah contoh kode.

8. Melempar pengecualian di blok terakhir

Pada prinsipnya, Anda dapat melakukan ini secara legal:
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();
		}
	}
}
Namun untuk menjaga keterbacaan kode, Anda perlu mendeklarasikan blok bersarang try-catchsebagai metode baru, dan memasukkan panggilan ke metode ini ke dalam blok 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. Apakah mungkin menggunakan return di blok akhirnya?

Ya kamu bisa.

10. Mengapa pengembang menangani pengecualian secara diam-diam?

Misalnya, potongan kode seperti itu sering muncul. Jika penanganan pengecualian yang tepat sangat penting, mengapa pengembang terus menulis dengan cara ini?
try {
     ...
} catch(Exception e) {
     e.printStackTrace();
}
Paling mudah untuk diabaikan. Namun meski sering dilakukan, bukan berarti benar. Tautan:
  1. Pengecualian Tidak Dicentang di Java
  2. Akar pohon pengecualian hierarki di Java
  3. Pertanyaan tentang pengecualian pada stackoverflow
Artikel asli
Apa lagi yang harus dibaca:

Pengecualian di Jawa

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