1. Pangecualian
>
Ing pungkasan, programer mikir kanggo nggawe standarisasi lan ngotomatisasi penanganan kesalahan. Iki kedadeyan nalika pangecualian diciptakake. Saiki mekanisme pangecualian nangani 80% kahanan sing luar biasa.
Yen sawetara sarjana teka karo pangecualian, iku kamungkinan subyek disertasi doktoral dheweke. Yen programmer teka munggah karo, banjur bisa uga wis ditampa pat loropaken ing mburi saka coworker: "Koyone oke, bro."
Nalika ana kesalahan ing program Jawa, kayata divisi dening 0, sawetara kedadeyan sing apik banget:
Langkah siji
Objek pangecualian khusus digawe, sing ngemot informasi babagan kesalahan sing kedadeyan.
Kabèh ing Jawa iku sawijining obyek, lan pangecualian ora pangecualian 🙂 Obyek pangecualian duwe kelas dhewe, lan mung bab sing mbedakake saka kelas biasa iku padha oleh warisan kelas Throwable.
Langkah loro
Objek pangecualian yaiku "dibuwang". Mbok menawa tembung ing kene bisa luwih apik. "Mbuwang pangecualian" luwih kaya micu weker geni utawa muni tandha "DEFCON 1".
Nalika pangecualian dibuwang menyang mesin Java, operasi normal program mandheg lan "protokol darurat" diwiwiti.
Langkah telu
Cara sing dibuwang pengecualian langsung metu. Pangecualian diterusake menyang cara nelpon, sing uga langsung metu. Lan sateruse mudhun rantai nganti maincara metu. Nalika maincara mungkasi, uga program kasebut.
Tuladha:
| Kode | Output konsol |
|---|---|
|
|
Pangecualian dumadi ing baris 20: divisi dening 0. Mesin Jawa langsung nggawe pangecualian - ArithmeticExceptionobyek lan "mbuwang" menyang cara.
Cara divide()ends langsung, supaya kita tau weruh senar: Boten elek kedaden: 0. Program bali menyang endTheWorld()cara, lan kahanan mbaleni dhewe: ana pangecualian unhandled ing sistem, kang tegese cara endTheWorld()uga terminates abnormally. Banjur maincara mandheg, lan program mandheg.
Apa tujuane pengecualian kasebut? Ya, sampeyan bisa nulis kode dhewe kanggo nyekel jinis pengecualian tartamtu lan nulis logika sampeyan dhewe kanggo nangani kahanan sing luar biasa.
2. Pengecualian nyekel:try-catch
Jawa nduweni mekanisme pangecualian sing ngidini sampeyan mungkasi cara sing ora normal iki. Katon kaya iki:
try
{
// Code where an exception might occur
}
catch(ExceptionType name)
{
// Exception handling code
}
Konstruksi iki diarani try-catchblok.
Kode ing ngendi pangecualian bisa kedadeyan dibungkus nganggo kurung kriting, didhisiki tembung try.
Sawise kurung kriting, kita duwe catchtembung kunci lan, ing jero kurung, deklarasi variabel pangecualian . Iki diterusake karo kurung kriting sing mbungkus kode sing bakal dieksekusi yen ana pangecualian saka jinis sing ditemtokake .
Yen ora ana pangecualian sing dibuwang sajrone eksekusi " kode utama ", banjur kode ing blok tangkapan ora bakal dieksekusi. Yen ana pangecualian, mula bakal dadi (yen jinis pengecualian sing dibuwang padha karo jinis variabel ing kurung).
Tuladha:
| Kode | Output konsol |
|---|---|
|
|
3. Multiple catchpamblokiran

Ing teori, kabeh jinis pangecualian bisa dibuwang ing blok kode. Sawetara sampeyan pengin nangani kanthi cara siji, liyane kanthi cara liya, lan liyane sampeyan bakal mutusake ora bakal ditangani.
Pangembang Jawa mutusake kanggo nulungi sampeyan lan ngidini sampeyan nulis ora mung siji nanging akeh catchblok sawise tryblok kasebut.
try
{
// Code where an exception might occur
}
catch (ExceptionType1 name1)
{
// Code for handling ExceptionType1
}
catch (ExceptionType2 name2)
{
// Code for handling ExceptionType2
}
catch (ExceptionType3 name3)
{
// Code for handling ExceptionType3
}
Tuladha:
| Kode | Output konsol |
|---|---|
|
|
4. Urutan catchpamblokiran
Pangecualian sing dumadi ing tryblok mung bisa kejiret dening catchblok siji. Sampeyan ora bisa duwe kahanan pangecualian ing ngendi kode saka pirang-pirang catchblok dieksekusi.
Nanging urutan pamblokiran penting.
Sampeyan bisa duwe kahanan ing ngendi pangecualian bisa kejiret dening pirang-pirang blok. Yen ngono, pangecualian bakal kejiret dening blok apa wae sing luwih dhisik (paling cedhak karo tryblok).
Carane sampeyan bisa duwe kahanan ing ngendi sawetara pamblokiran nyekel bisa nyekel pangecualian padha?
Kabeh pangecualian kalebu ing hirarki warisan siji - deleng diagram.

Obyek ArithmeticExceptionbisa ditugasake menyang variabel sing jinis ArithmeticExceptionutawa kelas leluhure: RuntimeException , Exceptionlan Throwable- ndeleng diagram.
Kita bakal ngomong luwih akeh babagan kelas warisan lan leluhur ing Level 21.
Kode iki bakal dikompilasi kanthi apik:
| Keuntungan saka warisan: |
|---|
|
Supaya sampeyan bisa nyekel ArithmeticExceptionkaro salah siji saka 4 catchpamblokiran ndhuwur.
Tuladha 1:
| Kode | Output konsol |
|---|---|
|
|
Ing conto iki, ArithmeticExceptionbisa kejiret dening loro catch (Exception e)lan catch (ArithmeticException e)pamblokiran. Bakal kejiret dening blok sing paling cedhak karo tryblok - blok pertama catch.
Kanggo ngindhari kejutan, luwih becik nyelehake catchblok sing bisa nyekel meh kabeh pangecualian ing mburi dhaptar catchblok.
Jinis iki Throwableumume bisa nyekel saben pangecualian sing bisa ditindakake ing Jawa . Yen dilebokake ing catchblok pisanan, kode kasebut ora bakal dikompilasi, amarga kompiler ngerti yen ana blok kode sing ora bisa digayuh.
GO TO FULL VERSION