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 main
cara metu. Nalika main
cara mungkasi, uga program kasebut.
Tuladha:
Kode | Output konsol |
---|---|
|
|
Pangecualian dumadi ing baris 20: divisi dening 0. Mesin Jawa langsung nggawe pangecualian - ArithmeticException
obyek 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 main
cara 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-catch
blok.
Kode ing ngendi pangecualian bisa kedadeyan dibungkus nganggo kurung kriting, didhisiki tembung try
.
Sawise kurung kriting, kita duwe catch
tembung 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 catch
pamblokiran
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 catch
blok sawise try
blok 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 catch
pamblokiran
Pangecualian sing dumadi ing try
blok mung bisa kejiret dening catch
blok siji. Sampeyan ora bisa duwe kahanan pangecualian ing ngendi kode saka pirang-pirang catch
blok 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 try
blok).
Carane sampeyan bisa duwe kahanan ing ngendi sawetara pamblokiran nyekel bisa nyekel pangecualian padha?
Kabeh pangecualian kalebu ing hirarki warisan siji - deleng diagram.
Obyek ArithmeticException
bisa ditugasake menyang variabel sing jinis ArithmeticException
utawa kelas leluhure: RuntimeException
, Exception
lan 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 ArithmeticException
karo salah siji saka 4 catch
pamblokiran ndhuwur.
Tuladha 1:
Kode | Output konsol |
---|---|
|
|
Ing conto iki, ArithmeticException
bisa kejiret dening loro catch (Exception e)
lan catch (ArithmeticException e)
pamblokiran. Bakal kejiret dening blok sing paling cedhak karo try
blok - blok pertama catch
.
Kanggo ngindhari kejutan, luwih becik nyelehake catch
blok sing bisa nyekel meh kabeh pangecualian ing mburi dhaptar catch
blok.
Jinis iki Throwable
umume bisa nyekel saben pangecualian sing bisa ditindakake ing Jawa . Yen dilebokake ing catch
blok pisanan, kode kasebut ora bakal dikompilasi, amarga kompiler ngerti yen ana blok kode sing ora bisa digayuh.
GO TO FULL VERSION