3. Pengecualian bungkus

Pangecualian sing dicenthang katon keren ing teori, nanging dadi frustasi gedhe ing praktik.

Upaminipun sampeyan duwe cara super populer ing project. Disebut saka atusan panggonan ing program sampeyan. Lan sampeyan mutusake kanggo nambah pangecualian sing dicenthang anyar . Lan bisa uga manawa pangecualian sing dicenthang iki pancen penting lan khusus, mung main()cara sing ngerti apa sing kudu ditindakake yen kejiret.

Tegese sampeyan kudu nambahake pangecualian sing dicenthang menyang throwsklausa saben metode sing nyebutake metode sing paling populer sampeyan . Uga ing throwsklausa saka kabeh cara sing nyebut metode kasebut. Lan cara-cara sing diarani metode kasebut.

Akibaté, throwsklausa setengah saka metode ing proyek entuk pangecualian sing dicenthang anyar . Lan mesthi proyek sampeyan ditutupi tes, lan saiki tes kasebut ora dikompilasi. Lan saiki sampeyan kudu ngowahi klausa mbuwang ing tes sampeyan uga.

Banjur kabeh kode sampeyan (kabeh owah-owahan ing atusan file) kudu dideleng dening programer liyane. Lan ing wektu iki, kita takon dhewe kenapa kita nggawe akeh owah-owahan getih ing proyek kasebut? Dina (s?) Kerja, lan tes sing rusak - kabeh kanggo nambah siji pengecualian sing dicenthang ?

Lan mesthi, isih ana masalah sing ana gandhengane karo warisan lan overriding metode. Masalah sing teka saka pangecualian sing dicenthang luwih gedhe tinimbang entuk manfaat. Ing ngisor iki yaiku saiki sawetara wong sing tresna lan sawetara wong sing nggunakake.

Nanging, isih akeh kode (kalebu kode perpustakaan Jawa standar) sing ngemot pangecualian sing dicenthang iki . Apa sing kudu dilakoni karo wong-wong mau? Kita ora bisa nglirwakake, lan kita ora ngerti carane nangani.

programer Java ngajokaken kanggo mbungkus pengecualian dicenthang ing RuntimeException. Ing tembung liyane, nyekel kabeh pangecualian sing dicenthang banjur nggawe pangecualian sing ora dicenthang (contone, RuntimeException) lan uncalan. Nindakake sing katon kaya iki:

try
{
   // Code where a checked exception might occur
}
catch(Exception exp)
{
   throw new RuntimeException(exp);
}

Iku ora solusi banget cantik, nanging ora ana pidana kene: pangecualian mung diiseni nang a RuntimeException.

Yen dikarepake, sampeyan bisa kanthi gampang njupuk saka ing kono. Tuladha:

Kode Cathetan
try
{
   // Code where we wrap the checked exception
   // in a RuntimeException
}
catch(RuntimeException e)
{
   Throwable cause = e.getCause();
   if (cause instanceof Exception)
   {
      Exception exp = (Exception) cause;
      // Exception handling code goes here
   }
}







Entuk pangecualian sing disimpen ing njero RuntimeExceptionobyek. Variabel kasebut causebisa null

Nemtokake jinis lan ngowahi dadi jinis pangecualian sing dicenthang .