30 Pertanyaan dan Jawaban Wawancara Penanganan Pengecualian Teratas [Untuk Freshers & Berpengalaman]
Diterbitkan: 2020-09-29Penanganan eksepsi adalah konsep yang diimplementasikan dalam algoritme untuk menangani kemungkinan kesalahan runtime, yang dapat mengganggu aliran normal suatu program. Beberapa kesalahan yang dapat ditangani dengan menggunakan konsep ini adalah:
- ClassNotFoundException
- IOException
- SQLException
- Pengecualian Jarak Jauh
- Pengecualian Waktu Proses:
- Pengecualian Aritmatika
- NullPointerException
- NumberFormatException
- Pengecualian IndexOutOfBounds
- ArrayIndexOutOfBoundsException
- StringIndexOutOfBoundsException
Manfaat implementasi ini adalah untuk mencegah crash program jika ada pengecualian saat menjalankan program. Tanpa Penanganan Pengecualian, program akan melontarkan kesalahan ketika menemukan pengecualian, dan sisa program tidak akan dieksekusi. Namun, menerapkan konsep ini akan memberikan solusi di mana sisa program dijalankan jika mereka independen sehubungan dengan pengecualian yang terjadi. Untuk mempelajari lebih lanjut, lihat kursus ilmu data kami.
Baca: Wajib Dibaca 30 Pertanyaan & Jawaban Wawancara Selenium: Panduan Utama
Pertanyaan dan Jawaban Wawancara Penanganan Pengecualian
1. Apa yang Anda maksud dengan pengecualian?
Ini adalah kondisi abnormal yang kadang-kadang ditemui ketika sebuah program dijalankan. Ini mengganggu aliran normal program. Pengecualian ini perlu ditangani; jika tidak, itu dapat menyebabkan program dihentikan secara tiba-tiba.
2. Jelaskan bagaimana eksepsi dapat ditangani di Jawa. Apa mekanisme penanganan eksepsi di balik proses tersebut?

Ada tiga bagian mekanisme penanganan eksepsi. Ini disebut:
- Coba blok: Bagian kode yang pertama kali dicoba untuk dieksekusi dan dipantau untuk pengecualian apa pun yang mungkin terjadi.
- Catch block: Jika ada pengecualian yang dilemparkan oleh blok 'try', itu ditangkap oleh bagian kode ini.
- Akhirnya blok: Kode di bawah bagian ini selalu dieksekusi terlepas dari pengecualian yang tertangkap di blok 'coba', jika ada. Bahkan jika tidak ada pengecualian, kode di bawah blok ini akan dieksekusi.
3. Apakah mungkin untuk menyimpan pernyataan lain di antara blok 'coba', 'tangkap', dan 'akhirnya'?
Tidak disarankan untuk menyertakan pernyataan apa pun di antara bagian-bagian dari 'try', 'catch', dan 'finally' blok, karena mereka membentuk satu kesatuan utuh dari mekanisme penanganan eksepsi.
mencoba
{
//Kode yang dipantau untuk pengecualian.
}
//Anda tidak dapat menyimpan pernyataan di sini
tangkap (Pengecualian ex)
{
//Tangkap pengecualian yang dilemparkan oleh blok try, jika ada.
}
//Anda tidak dapat menyimpan pernyataan di sini
akhirnya
{
//Blok ini selalu dieksekusi terlepas dari pengecualian.
}
4. Apakah mungkin untuk hanya menyertakan blok 'coba' tanpa blok 'tangkap' dan 'akhirnya'?
Ini akan memberikan kesalahan kompilasi. Blok 'coba' harus diikuti dengan blok 'tangkap' atau blok 'akhirnya', jika tidak keduanya. Salah satu blok 'catch' atau 'finally' diperlukan agar aliran penanganan eksepsi tidak terganggu.
5. Apakah mungkin untuk menyimpan pernyataan setelah blok 'akhirnya' jika kontrol kembali dari blok akhirnya itu sendiri?
Ini akan menghasilkan kesalahan blok tangkapan yang tidak dapat dijangkau. Ini karena kontrol akan kembali dari blok 'akhirnya' itu sendiri. Kompiler akan gagal mengeksekusi kode setelah baris dengan pengecualian. Itu sebabnya eksekusi akan menunjukkan kesalahan kode yang tidak dapat dijangkau.
Bermimpi untuk Belajar di Luar Negeri? Inilah Program yang Tepat untuk Anda6. Jelaskan kesalahan blok tangkapan yang tidak dapat dijangkau.
Dalam kasus beberapa blok tangkap, urutan penempatan blok tangkap adalah dari yang paling spesifik hingga yang paling umum. Artinya, sub kelas dari pengecualian harus didahulukan, dan kemudian kelas super akan mengikuti. Jika kelas super disimpan terlebih dahulu, diikuti oleh sub kelas setelahnya, kompiler akan menampilkan kesalahan blok tangkapan yang tidak dapat dijangkau.
Penanganan Pengecualian kelas publik
{
public static void main(String[] args)
{
mencoba
{
int i = Integer.parseInt(“tes”);
//Pernyataan ini akan memunculkan NumberFormatException //karena input yang diberikan adalah string, sedangkan //format yang ditentukan adalah integer.
}
tangkap (Pengecualian ex)
{
System.out.println(“Blok ini menangani semua tipe pengecualian”);
//Semua jenis eksepsi dapat ditangani di //blok ini karena ini adalah kelas super eksepsi.
}
tangkap (NumberFormatException ex)
{
//Ini akan memberikan kesalahan waktu kompilasi
//Blok ini akan menjadi tidak terjangkau karena
//pengecualian akan sudah ditangkap oleh //catch block di atas
}
}
}
7. Pertimbangkan tiga pernyataan dalam blok 'coba': pernyataan1, pernyataan2, dan pernyataan3. Ini diikuti oleh blok 'catch' untuk menangkap pengecualian yang terjadi selama eksekusi blok 'try'. Asumsikan bahwa pengecualian dilemparkan ke pernyataan2. Apakah Anda pikir statement3 akan dieksekusi?
Pernyataan3 tidak akan dieksekusi. Jika pengecualian dilemparkan oleh blok 'coba' pada titik mana pun, kode yang tersisa setelah pengecualian tidak akan dieksekusi. Sebaliknya, kontrol aliran akan langsung datang ke blok 'tangkap'.
8. Membedakan error dan exception pada Java.
Perbedaan utama antara kesalahan dan pengecualian adalah bahwa sementara kesalahan disebabkan oleh lingkungan di mana JVM (Java Virtual Machine) berjalan, pengecualian disebabkan oleh program itu sendiri. Misalnya, OutOfMemory adalah kesalahan yang terjadi ketika JVM menghabiskan memorinya.
Namun, NullPointerException adalah pengecualian yang ditemui saat program mencoba mengakses objek null. Memulihkan dari kesalahan tidak mungkin. Oleh karena itu, satu-satunya solusi untuk kesalahan adalah menghentikan eksekusi. Namun, adalah mungkin untuk mengatasi pengecualian menggunakan blok coba dan tangkap atau dengan mengembalikan pengecualian ke fungsi pemanggil.
Wajib Dibaca: Pertanyaan & Jawaban Wawancara Java
9. Apa saja jenis-jenis pengecualian? Jelaskan mereka.
Ada dua jenis pengecualian:
Pengecualian yang Dicentang
Jenis pengecualian yang diketahui dan dikenali oleh kompiler. Pengecualian ini hanya dapat diperiksa dalam waktu kompilasi. Oleh karena itu, mereka juga disebut pengecualian waktu kompilasi. Ini dapat ditangani dengan menggunakan blok coba dan tangkap atau dengan menggunakan klausa lempar. Jika pengecualian ini tidak ditangani dengan tepat, mereka akan menghasilkan kesalahan waktu kompilasi. Contohnya termasuk subkelas dari java.lang.Exception kecuali untuk RunTimeException.
Pengecualian Tidak Dicentang
Jenis pengecualian yang tidak dikenali oleh kompiler. Mereka terjadi pada waktu berjalan saja. Oleh karena itu, mereka juga disebut pengecualian waktu berjalan. Mereka tidak diperiksa pada waktu kompilasi. Oleh karena itu, bahkan setelah kompilasi berhasil, mereka dapat menyebabkan program berhenti sebelum waktunya jika tidak ditangani dengan tepat. Contohnya termasuk subkelas dari java.lang.RunTimeException dan java.lang.Error.
10. Apa hierarki pengecualian di Jawa?
Java.lang.Throwable adalah kelas super dari semua kesalahan dan pengecualian di Java. Kelas ini memperluas kelas java.lang.Object. Argumen dari blok catch harus tipenya atau tipe subkelasnya saja. Kelas Throwable mencakup dua sub kelas:
- java.lang.Error : Ini adalah kelas super untuk semua jenis kesalahan di Jawa. Kesalahan umum yang termasuk di bawah ini adalah –
- java.lang.VirtualMachineError: Di bawah ini –
- StackOverFlowError
- OutofMemoryError
- java.lang.AssertionError
- java.lang.LinkageError: Di bawah ini –
- NoClassDefFoundError
- Tidak kompatibelClassChangeError
- java.lang.VirtualMachineError: Di bawah ini –
- java.lang.Exception: Ini adalah super class dari semua tipe exception di Java. Pengecualian umum di bawah ini adalah –
- RunTimeException
- Pengecualian Aritmatika
- NumberFormatException
- NullPointerException
- ArrayIndexOutOfBoundsException
- Pengecualian KelasCast
- java.lang.InterruptedException
- java.lang.IOException
- java.lang.SQLException
- java.lang.ParseException
- RunTimeException
11. Apa pengecualian runtime di Java? Berikan beberapa contoh.
Pengecualian yang terjadi pada waktu proses disebut pengecualian waktu proses. Kompiler tidak dapat mengenali pengecualian ini, seperti pengecualian yang tidak dicentang. Ini mencakup semua sub kelas java.lang.RunTimeException dan java.lang.Error. Contohnya termasuk, NumberFormatException, NullPointerException, ClassCastException, ArrayIndexOutOfBoundException, StackOverflowError dll.
12. Definisikan OutOfMemoryError di Java.
Ini adalah sub kelas dari java.lang.Error yang ditemui ketika JVM kehabisan memori.
13. Bedakan antara NoClassDefFoundError dan ClassNotFoundException di Java.
Baik NoClassDefFoundError dan ClassNotFoundException terjadi ketika kelas tertentu tidak ditemukan dalam waktu proses. Namun, mereka terjadi di bawah skenario yang berbeda. NoClassDefFoundError adalah ketika kesalahan terjadi karena kelas tertentu hadir pada waktu kompilasi tetapi hilang pada waktu berjalan. ClassNotFoundException terjadi ketika pengecualian ditemui untuk aplikasi yang mencoba memuat kelas pada waktu berjalan yang tidak diperbarui di classpath.
14. Apakah blok 'finally' dieksekusi jika salah satu blok 'try' atau 'catch' mengembalikan kontrol?
Blok 'akhirnya' selalu dieksekusi terlepas dari apakah blok coba atau tangkap mengembalikan kontrol atau tidak.
15. Apakah mungkin untuk melempar pengecualian secara manual? Jika ya, jelaskan caranya.
Dimungkinkan untuk melempar pengecualian secara manual. Hal ini dilakukan dengan menggunakan kata kunci 'melempar'. Sintaks untuk melempar pengecualian secara manual adalah

melempar InstanceOfThrowableType;
Berikut adalah contoh penggunaan kata kunci 'lempar' untuk melempar pengecualian secara manual.
mencoba
{
NumberFormatException ex = new NumberFormatException(); //Di sini kita membuat objek untuk NumberFormatException secara eksplisit
membuang mantan; //melempar objek NumberFormatException secara eksplisit menggunakan kata kunci lempar
}
tangkap (NumberFormatException ex)
{
System.out.println(“Dalam blok ini, objek NumberFormatException yang dilemparkan secara eksplisit dapat ditangkap.”);
}
Baca: 35 Pertanyaan & Jawaban Wawancara Musim Semi Terbaik: Panduan Utama
16. Apa yang Anda maksud dengan rethrowing exception di Java?
Pengecualian yang dimunculkan di blok 'coba' ditangani di blok 'tangkap'. Jika blok 'catch' tidak dapat menangani eksepsi tersebut, mungkin saja blok tersebut dapat menampilkan kembali eksepsi yang sama menggunakan kata kunci 'throw'. Mekanisme ini disebut rethrowing exception. Implementasinya adalah sebagai berikut:
mencoba
{
String s = nol;
System.out.println(s.length()); //Pernyataan ini melempar NullPointerException
}
tangkap (NullPointerException ex)
{
System.out.println(“Di sini NullPointerException tertangkap”);
membuang mantan; //Mengulangi NullPointerException
}
17. Mengapa Anda menggunakan kata kunci 'throws' di Java?
Jika memungkinkan bagi suatu metode untuk melempar pengecualian jika tidak dapat ditangani, metode tersebut harus menetapkan pengecualian tersebut menggunakan kata kunci 'melempar'. Ini akan membantu fungsi pemanggil dari metode itu dalam menangani pengecualian itu. Sintaks untuk menggunakan kata kunci 'melempar' adalah,
return_type method_name(parameter_list) melempar exception_list
{
//kode
}
Di sini, exception_list adalah daftar pengecualian yang mungkin dilemparkan oleh metode tersebut. Pengecualian ini harus dipisahkan dengan koma. Contoh kodenya:
Penanganan Pengecualian kelas publik
{
public static void main(String[] args)
{
mencoba
{
metodeDenganMelempar();
}
tangkap (NullPointerException ex)
{
System.out.println("NullPointerException yang dilemparkan oleh metode methodWithThrows() akan ditangkap di sini");
}
}
static void methodWithThrows() melempar NullPointerException
{
String s = nol;
System.out.println(s.length()); //Pernyataan ini melempar NullPointerException
}
}
18. Sering disarankan untuk tetap membersihkan operasi seperti menutup sumber daya DB di dalam blok 'akhirnya'. Mengapa perlu?
Blok 'finally' selalu dieksekusi terlepas dari fakta jika pengecualian dimunculkan di blok 'try' atau jika pengecualian yang dimunculkan ditangkap di blok 'catch' atau tidak. Menjaga operasi pembersihan di blok 'akhirnya' memastikan operasi operasi ini dalam hal apa pun, dan tidak akan terpengaruh oleh pengecualian, yang mungkin naik atau tidak.
19. Bagaimana Anda membedakan antara final, last, dan finalize di Java?
Pertama, 'final' adalah kata kunci yang dapat digunakan untuk membuat variabel atau metode atau kelas sebagai tidak dapat diubah. Sederhananya, jika sebuah variabel dideklarasikan sebagai final, setelah diinisialisasi, nilainya tidak dapat diubah. Jika suatu metode dideklarasikan sebagai final, metode tersebut tidak dapat ditimpa atau dimodifikasi di sub kelas. Jika sebuah kelas dideklarasikan sebagai final, kelas tersebut tidak dapat diperluas ke kelas selanjutnya.
Kedua, 'finally' adalah blok yang digunakan dalam penanganan exception bersama dengan blok 'try' dan 'catch'. Blok ini selalu dieksekusi terlepas dari eksepsi yang dimunculkan atau jika eksepsi yang dimunculkan ditangani. Biasanya, blok ini digunakan untuk melakukan operasi pembersihan untuk menutup sumber daya seperti koneksi basis data, sumber daya I/O, dll.
Ketiga, metode finalize() adalah metode yang dilindungi. Itu milik kelas java.lang.Object. Setiap kelas yang dibuat di Java mewarisi metode ini. Thread pengumpul sampah memanggil metode ini sebelum objek dihapus dari memori. Sebelum objek dihapus dari memori, metode ini digunakan untuk melakukan beberapa operasi pembersihan.
protected void finalize() melempar Throwable
{
// Operasi pembersihan
}
20. Apa pengecualian khusus di java?
Kelas pengecualian dapat dilempar di Jawa sesuai dengan persyaratan aliran program. Pengecualian ini disebut pengecualian yang ditentukan pengguna. Mereka juga disebut pengecualian khusus. Pengecualian ini harus memperluas salah satu kelas dalam hierarki pengecualian.
21. Bagaimana Anda menjelaskan ClassCastException di Java?
Ketika JVM tidak dapat mentransmisikan objek dari satu tipe ke tipe lain, pengecualian ini dimunculkan. Ini adalah RunTimeException.
22. Bedakan antara lemparan, lemparan dan lemparan di Jawa.
Pertama, kata kunci 'melempar' digunakan untuk melempar pengecualian secara manual di Jawa. Dengan menggunakan kata kunci ini, dimungkinkan untuk melempar pengecualian dari metode atau blok apa pun. Namun, sangat penting bahwa pengecualian harus bertipe kelas java.lang.Throwable atau milik salah satu sub kelas dari kelas java.lang.Throwable.
Kedua, kata kunci 'throws' digunakan dalam metode signature di Java. Jika metode ini mampu melempar pengecualian, itu ditunjukkan oleh metode ini. Pengecualian yang disebutkan ditangani oleh fungsi pemanggil masing-masing. Hal ini dilakukan baik dengan menggunakan blok try and catch atau dengan menggunakan kata kunci throws.
Ketiga, kelas super untuk semua jenis kesalahan dan pengecualian di Java disebut Throwable. Ini adalah anggota dari paket java.lang. JVM atau pernyataan throw hanya memunculkan instance dari kelas ini atau subkelasnya. Blok catch hanya boleh berisi satu argumen dan harus bertipe ini atau subkelasnya. Jika pengecualian khusus dibuat, mereka juga harus memperluas kelas ini.
23. Jelaskan StackOverflowError di Java.
Ini adalah kesalahan yang dilontarkan oleh JVM saat tumpukan meluap saat runtime.
24. Apakah mungkin untuk mengganti metode kelas super yang melempar pengecualian yang tidak dicentang dengan pengecualian yang diperiksa di sub kelas?
Itu tidak mungkin karena jika metode kelas super melempar pengecualian yang tidak dicentang, itu akan ditimpa di sub kelas dengan pengecualian yang sama atau pengecualian lain yang tidak dicentang. Tapi, itu tidak bisa diganti dengan pengecualian yang diperiksa.
25. Tentukan pengecualian berantai di Jawa.
Dalam sebuah program, satu pengecualian dapat membuang banyak pengecualian dengan menginduksi efek domino. Hal ini menyebabkan rantai pengecualian. Adalah bermanfaat untuk mengetahui lokasi penyebab sebenarnya dari pengecualian. Ini dimungkinkan dengan fitur pengecualian berantai di Jawa. Ini telah diperkenalkan sejak JDK 1.4. Untuk implementasi pengecualian berantai di Jawa, dua konstruktor baru dan dua metode baru disertakan dalam kelas Throwable. Ini adalah,
Konstruktor Kelas Throwable:
- Throwable(Throwable cause): Penyebabnya adalah pengecualian yang memunculkan pengecualian saat ini.
- Throwable(String msg, Throwable cause): String msg adalah pesan pengecualian. Pengecualian yang memunculkan pengecualian saat ini adalah penyebabnya di sini.
Metode kelas Throwable:
- metode get Cause() : Penyebab sebenarnya dari eksepsi yang dimunculkan dikembalikan oleh metode ini.
- metode init Cause(Throwable cause) : Penyebab pengecualian pemanggilan diatur oleh metode ini.
26. Kelas mana yang didefinisikan sebagai kelas super untuk semua jenis kesalahan dan pengecualian di Jawa?
Kelas super untuk semua jenis kesalahan dan pengecualian adalah java.lang.Throwable di Java.
27. Apa yang dapat diklasifikasikan sebagai kombinasi yang benar dari try, catch dan akhirnya blok?
Kombinasi blok coba dan tangkap.
mencoba
{
//coba blok
}
tangkap (Pengecualian ex)
{
//tangkap blok
}
Kombinasi coba dan akhirnya blok.
mencoba
{
//coba blok
}
akhirnya
{
//akhirnya blokir
}
Kombinasi ketiganya: coba, blokir, akhirnya blokir.
mencoba
{
//coba blok
}
tangkap (Pengecualian ex)
{
//tangkap blok
}
akhirnya
{
//akhirnya blokir
}
28. Mengapa Anda menggunakan metode printStackTrace()?
Metode ini digunakan untuk mencetak informasi rinci tentang pengecualian yang terjadi.
29. Apa saja contoh pengecualian yang diperiksa?
Beberapa contoh pengecualian yang diperiksa termasuk ClassNotFoundException, SQLException, dan IOException.

30. Apa saja contoh pengecualian yang tidak dicentang?
Beberapa contoh pengecualian yang tidak dicentang termasuk NullPointerException, ArrayIndexOutOfBoundsException dan NumberFormatException.
Baca Juga: Wajib Dibaca 47 Pertanyaan & Jawaban Wawancara OOPS Untuk Freshers & Berpengalaman
Membungkus
Jika Anda tertarik untuk mempelajari lebih lanjut tentang big data, lihat Diploma PG upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Tumpukan Penuh yang dirancang untuk para profesional yang bekerja dan menawarkan 500+ jam pelatihan ketat, 9+ proyek, dan tugas, IIIT -B Status alumni, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.
Jika Anda tertarik untuk mempelajari Ilmu Data dan memilih untuk berkarir di bidang ini, lihat Program PG Eksekutif IIIT-B & upGrad dalam Ilmu Data yang dibuat untuk para profesional yang bekerja dan menawarkan 10+ studi kasus & proyek, lokakarya praktik langsung , bimbingan dengan pakar industri, 1-on-1 dengan mentor industri, 400+ jam pembelajaran dan bantuan pekerjaan dengan perusahaan-perusahaan top.
