1. Jinis pangecualian

Kabeh pangecualian dipérang dadi 4 jinis, sing sejatine minangka kelas sing diwarisake.
Throwable
kelas
Kelas dhasar kanggo kabeh pengecualian yaiku Throwable
kelas. Kelas Throwable
ngemot kode sing nulis tumpukan telpon saiki (tumpukan tilak saka cara saiki) kanggo Uploaded. Kita bakal sinau apa tilak tumpukan sethitik mengko.
Operator uncalan mung bisa nampa obyek sing asalé saka Throwable
kelas. Lan sanajan sampeyan kanthi teori bisa nulis kode kaya throw new Throwable();
, biasane ora ana sing nindakake iki. Tujuan utama Throwable
kelas kasebut yaiku duwe kelas induk tunggal kanggo kabeh pengecualian.
Error
kelas
Kelas pangecualian sabanjure yaiku Error
kelas, sing langsung marisi Throwable
kelas kasebut. Mesin Java nggawe obyek saka Error
kelas (lan turunane) nalika ana masalah serius . Contone, malfunction hardware, memori ora cukup, etc.
Biasane, minangka programmer, sampeyan ora bisa nindakake apa-apa ing kahanan sing ana kesalahan (jenis sing Error
kudu dibuwang) ing program: kesalahan kasebut serius banget. Sampeyan mung bisa menehi kabar marang pangguna yen program nabrak lan / utawa nulis kabeh informasi sing dikenal babagan kesalahan kasebut menyang log program.
Exception
kelas
Kelas Exception
lan RuntimeException
kanggo kesalahan umum sing kedadeyan ing operasi akeh metode. Sasaran saben pangecualian sing dibuwang yaiku kejiret blok catch
sing ngerti cara nangani kanthi bener.
Nalika cara ora bisa ngrampungake karya kanggo sawetara alesan, iku kudu langsung ngabari cara nelpon dening mbuwang pangecualian saka jinis cocok.
Ing tembung liyane, yen variabel padha karo null
, cara bakal uncalan a NullPointerException
. Yen argumen sing salah diterusake menyang metode kasebut, bakal mbuwang InvalidArgumentException
. Yen cara sengaja dibagi dening nul, iku bakal uncalan ArithmeticException
.
RuntimeException
kelas
RuntimeExceptions
minangka subset saka Exceptions
. Kita malah bisa ngomong sing RuntimeException
versi entheng saka pangecualian biasa ( Exception
) — luwih sithik syarat lan watesan sing dileksanakake kanggo pangecualian kasebut
Sampeyan bakal sinau beda antarane Exception
lan RuntimeException
mengko.
2.: Throws
dicenthang pangecualian

Kabeh pangecualian Jawa kalebu 2 kategori: dicenthang lan ora dicenthang .
Kabeh pangecualian sing marisi RuntimeException
utawa Error
dianggep minangka pangecualian sing ora dicenthang . Kabeh liyane wis dicenthang pangecualian .
Rong puluh taun sawisé dicenthang pangecualian, meh saben programer Jawa nganggep iki minangka bug. Ing kerangka modern sing populer, 95% kabeh pangecualian ora dicenthang. Basa C#, sing meh nyalin Jawa persis, ora nambah pangecualian sing dicenthang .
Apa prabédan utama antarane pangecualian sing dicenthang lan sing ora dicenthang ?
Ana syarat tambahan sing ditrapake kanggo pengecualian sing dicenthang . Secara kasar, yaiku:
Syarat 1
Yen cara mbuwang pangecualian sing dicenthang , kudu nuduhake jinis pangecualian ing tandhane . Mangkono, saben cara sing nyebutake ngerti manawa "pengecualian sing migunani" iki bisa kedadeyan.
Nuduhake pangecualian sing dicenthang sawise paramèter metode sawise throws
tembung kunci (aja throw
salah nggunakake tembung kunci). Iku katon kaya iki:
type method (parameters) throws exception
Tuladha:
dicenthang pangecualian | pangecualian sing ora dicenthang |
---|---|
|
|
Ing conto ing sisih tengen, kode kita mbuwang pengecualian sing ora dicenthang - ora ana tindakan tambahan sing dibutuhake. Ing conto ing sisih kiwa, metode kasebut mbuwang pengecualian sing wis dicenthang , mula throws
tembung kunci ditambahake menyang tandha metode bebarengan karo jinis pengecualian kasebut.
Yen cara ngarepake mbuwang pirang-pirang pangecualian sing dicenthang , kabeh kasebut kudu ditemtokake sawise throws
tembung kunci, dipisahake karo koma. Urutan ora penting. Tuladha:
public void calculate(int n) throws Exception, IOException
{
if (n == 0)
throw new Exception("n is null!");
if (n == 1)
throw new IOException("n is 1");
}
Syarat 2
Yen sampeyan nelpon cara sing wis dicenthang pangecualian ing teken, sampeyan ora bisa nglirwakake kasunyatan sing mbalang wong.
Sampeyan kudu nyekel kabeh pangecualian kasebut kanthi nambahake catch
blok kanggo saben siji, utawa nambahake menyang throws
klausa kanggo metode sampeyan.
Kaya-kaya kita ngomong, " Istiméwa iki penting banget supaya kita kudu nyekel wong-wong mau. Lan yen kita ora ngerti carane nangani, banjur sapa wae sing nelpon cara kita kudu diwenehi kabar yen pengecualian kasebut bisa kedadeyan.
Tuladha:
Bayangake yen kita nulis cara kanggo nggawe jagad sing diisi manungsa. Nomer awal wong diterusake minangka argumentasi. Dadi kita kudu nambah pangecualian yen ana sawetara wong.
Nggawe Bumi | Cathetan |
---|---|
|
Cara kasebut bisa nggawe rong pengecualian sing dicenthang :
|
Telpon metode iki bisa ditangani kanthi 3 cara:
1. Aja nyekel sembarang istiméwa
Iki paling asring ditindakake nalika metode kasebut ora ngerti cara nangani kahanan kasebut kanthi bener.
Kode | Cathetan |
---|---|
|
Cara nelpon ora nyekel pangecualian lan kudu menehi informasi marang wong liya babagan iki: nambahake menyang throws klausa dhewe |
2. Nyekel sawetara pangecualian
Kita nangani kesalahan sing bisa ditangani. Nanging sing kita ora ngerti, kita uncalan menyang cara nelpon. Kanggo nindakake iki, kita kudu nambah jenenge menyang klausa throws:
Kode | Cathetan |
---|---|
|
Panelpon nyekel mung siji pangecualian dicenthangLonelyWorldException - . Pangecualian liyane kudu ditambahake menyang teken, nuduhake sawise throws tembung kunci |
3. Nyekel kabeh istiméwa
Yen cara ora mbuwang pangecualian kanggo cara nelpon, banjur cara nelpon tansah manteb ing ati sing kabeh bisa uga. Lan ora bakal bisa tumindak kanggo ndandani kahanan sing luar biasa.
Kode | Cathetan |
---|---|
|
Kabeh pangecualian kejiret ing cara iki. Sing nelpon bakal manteb ing ati yen kabeh wis apik. |
3. Nyekel kaping istiméwa
Programer tenan sengit kanggo duplikat kode. Malah padha teka karo prinsip pembangunan sing cocog - KERING : Aja Baleni dhewe. Nanging nalika nangani pangecualian, asring ana try
sawetara pamblokiran catch
kanthi kode sing padha.
Utawa bisa uga ana 3 catch
blok kanthi kode sing padha lan 2 catch
blok liyane kanthi kode sing padha. Iki minangka kahanan standar nalika proyek sampeyan nangani pengecualian kanthi tanggung jawab.
Diwiwiti karo versi 7, ing basa Jawa nambahake kemampuan kanggo nemtokake macem-macem jinis pengecualian ing catch
blok siji. Kira-kira katon kaya iki:
try
{
// Code where an exception might occur
}
catch (ExceptionType1 | ExceptionType2 | ExceptionType3 name)
{
// Exception handling code
}
Sampeyan bisa duwe minangka akeh catch
pamblokiran sing pengin. Nanging, blok siji catch
ora bisa nemtokake pangecualian sing bisa marisi siji liyane. Ing tembung liyane, sampeyan ora bisa nulis catch ( Exception
| RuntimeException
e), amarga RuntimeException
kelas warisan Exception
.
GO TO FULL VERSION