Java nangani kesalahan karo try/catch/finally, lan unikno mbedake panganan checked (kudu dinyatakake utawa ditangani) saka panganan unchecked (runtime, ora dipeksa). Kapaham bedane iki minangka tengah-tengahing panganan kesalahan Java.
Java nangani kesalahan karo try/catch/finally, lan unikno mbedake panganan checked (kudu dinyatakake utawa ditangani) saka panganan unchecked (runtime, ora dipeksa). Kapaham bedane iki minangka tengah-tengahing panganan kesalahan Java.
try {
FileReader f = new FileReader("file.txt"); // may throw IOException
// ... use it ...
} catch (FileNotFoundException e) {
System.out.println("not found: " + e.getMessage()); // specific first
} catch (IOException e) {
System.out.println("io error"); // broader after
} finally {
System.out.println("always runs — cleanup"); // runs no matter what
}
finally tansah dijalanaken (bebersihan), sanajan panganan dilebokake utawa return dumadi.
Throwable
├── Error — serious JVM problems (OutOfMemoryError) — don't catch
└── Exception
├── RuntimeException → UNCHECKED (not enforced by the compiler)
│ NullPointerException, IllegalArgumentException, IndexOutOfBounds...
└── (other Exceptions) → CHECKED (compiler enforces handling)
IOException, SQLException...
// MUST either catch it or declare `throws` — the compiler won't let you ignore it
public void readFile() throws IOException { // declare it
Files.readAllLines(Paths.get("file.txt")); // throws checked IOException
}
Panganan checked (IOException, SQLException) makili kahanan sing bisa dipulih, kaandele (file ilang, gagal jaringan). Compiler memaksa sampeyan nangani utawa dinyatakake — nggawe panganan gagal eksternal gamblang.
// NOT required to declare or catch — usually indicate PROGRAMMING BUGS
String s = null;
s.length(); // NullPointerException (unchecked)
int x = arr[10]; // ArrayIndexOutOfBoundsException (unchecked)
Integer.parseInt("abc"); // NumberFormatException (unchecked)
Panganan unchecked (subclass RuntimeException) biasane tandha kesalahan program — sira ngamandake bug tinimbang nangani ing sadurunge. Compiler ora memaksa panganan.
// resources implementing AutoCloseable are closed automatically
try (FileReader f = new FileReader("file.txt")) {
// use f
} // f.close() called automatically, even on exception — no finally needed
✓ Catch specific exceptions, not bare Exception
✓ Use try-with-resources for files/connections (auto-close)
✓ Don't swallow exceptions silently (empty catch blocks)
✓ Throw meaningful exceptions; include context in messages
✓ Custom exceptions extend Exception (checked) or RuntimeException (unchecked)
Panganan kesalahan sing kuat kudu diperlokake, lan bedane checked/unchecked Java minangka fitur (lan kapengin diperdebatake) sing perlu dikapaham kanthi jembar.
Panganan checked memaksa panganan gamblang gagal eksternal kaandele (I/O, DB) — ningkatake kapercayan nanging kadhang dikritik minangka ramet; panganan unchecked makili bug sing kudu didandani tinimbang ditangani.Ngerti hierarki, bisokna saben jinis, semantik try/catch/finally, lan try-with-resources modern kanggo bebersihan otomatis minangka dhasar kanggo nulis Java sing bener lan kapercayan — lan kanggo ngrumusake panganan dhewe kanthi bener.
Bedane membentuk cara API Java dirancang lan minangka ginem sing kerep ana ing wawancara lan ulasan kode.
Pustaka pitakon wawancara IT kanthi jawaban rinci — saka Junior nganti Senior.
Nyumbang