KodeGym/Blog Jawa/Acak/Java throw Exception
John Squirrels
tingkat
San Francisco

Java throw Exception

Diterbitake ing grup
Nang endi wae kita lunga, acara sing ora bisa ditebak nunggu kita. Gempa bumi, tumindak ora rasional wong, meteorit ... utawa sing luwih prasaja - bolam lampu mati, kertu bank demagnetizes, gauge bensin pecah. Kita ora bisa mateni acara sing ora bisa diprediksi, nanging paling ora bisa disiapake. Tegese, kita kudu nyiapake mekanisme tartamtu kanggo ngatasi. Ing jagad pemrograman, khusus ing basa Jawa, acara sing nyegah program ora bisa digunakake kanthi normal diarani pengecualian, lan mekanisme kanggo nyegah kacilakan program kasebut diarani penanganan pengecualian. Dadi, nalika acara sing ora dikarepke ana ing program, kayata divisi kanthi nol, mesthine kudu "mbuwang" pangecualian. Penanganan pangecualian minangka aspek penting saka pemrograman Java sing mbantu pangembang ngatur kesalahan lan pangecualian sing bisa kedadeyan sajrone eksekusi program. Ing artikel iki, kita bakal fokus ing salah siji saka konsep dhasar penanganan istiméwa: tembung kunci uncalan Jawa lan carane nggunakake kanggo uncalan pangecualian.

Apa Pengecualian ing Jawa?

Pangecualian yaiku acara sing kedadeyan sajrone eksekusi program sing ngganggu aliran normal instruksi program. Nalika ana pangecualian, eksekusi program bakal mandheg, lan pesen kesalahan ditampilake ing konsol. Ing Jawa, ana rong jinis pangecualian: dicenthang lan ora dicenthang. Pengecualian sing dicenthang dicenthang ing wektu kompilasi, lan kompiler mesthekake yen kejiret utawa diumumake kanthi cara nelpon. Ing sisih liya, pangecualian sing ora dicenthang ora dicenthang ing wektu kompilasi, lan bisa kejiret utawa ora kejiret. Iki minangka conto kode sing bisa uga ana kesalahan, nanging kompiler ora bisa.
public class Factorial {
   public static long getFactorial(final int number) {
           long fact = 1;
           for (int i = 1; i <= number; i++) {
               fact = fact * i;
           }
           return fact;
   }

   public static void main(String[] args) {
       System.out.println(getFactorial(-5));
       System.out.println(getFactorial(21));

   }

}
Punika output program:
1 -4249290049419214848
Program metu kanthi bener, nanging ngasilake asil sing salah. Ing kasus sing sepisanan, amarga argumen fungsi negatif, lan faktorial ora bisa digunakake kanggo nomer negatif. Ing kasus sing kapindho, asile salah, amarga nomer kasebut gedhe banget kanggo ngetung faktorial ing sawetara jinis dawa. Punika conto liyane. Ayo nulis program sing bakal dibagi siji nomer liyane.
public class DivisionExample {

       public static void main(String[] args) {
           int a = 10;
           int b = 0;
           int result = divide(a, b);
           System.out.println(result);
       }

       public static int divide(int a, int b) {
           return a / b;
       }
}
Ing conto iki, ArithmeticException bakal dibuwang amarga variabel b nol. Nanging, kesalahan iki ora ditangani, mula program metu kanthi status sing salah.

Carane uncalan pangecualian ing Jawa

Ing Jawa, pangecualian uga minangka obyek, mula pangecualian dibuwang kaya obyek Pengecualian anyar sing digawe. Pangecualian dibuwang ing program nggunakake statement uncalan. Biasane, rong operasi iki (nggawe obyek lan mbuwang pengecualian) digabung dadi siji:
throw new Exception("error…");
Tembung kunci uncalan ing Jawa digunakake kanggo uncalan pangecualian saka cara utawa pamblokiran kode nalika ana kesalahan utawa kondisi ngédap sing program ora bisa nangani ing runtime. Aliran program dialihake menyang blok nyekel sing paling cedhak. Blok iki bisa ngatur pangecualian.

Conto panggunaan tembung kunci 'buwang'

Kanggo nggambarake fungsi tembung kunci uncalan ing Jawa, ayo njupuk conto. Ayo nulis cara kanggo ngitung faktorial saka nomer. Yen nomer kasebut negatif, ora bisa diitung, mula pangecualian kudu dibuwang. Kajaba iku, yen jumlah gedhe banget, asil faktorial bakal ngluwihi ukuran maksimum saka jinis dawa, lan pangecualian liyane bakal dibuwang. Ing kene kita duwe implementasine metode kasebut:
public Class Factorial {

public static long getFactorial(final int number) {
   if ((number >= 0) && (number < 21)) {
       long fact = 1;
       for (int i = 1; i <= number; i++) {
           fact = fact * i;
       }
       return fact;
   } else {

//throw new exception here
       throw new IllegalArgumentException("THe argument isn't legal");
   }
}

 public static void main(String[] args) {
       System.out.println(getFactorial(-5));
       System.out.println(getFactorial(21));

   }
}
Ing conto iki, yen nilai nomer negatif, tembung kunci uncalan digunakake kanggo uncalan Kayata saka kelas IllegalArgumentException . Yen sampeyan mbukak program kasebut, pesen "Argumentasi ora sah" bakal ditampilake ing konsol. Eksekusi program bakal mandheg.

Ora ana kesalahan maneh: nyekel conto pangecualian

Saiki ayo elinga conto kapindho, kanthi divisi dening nol, lan nglakokake kanthi penanganan sing ora ana.
public class DivisionExample {

    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        try {
            int result = divide(a, b);
            System.out.println(result);
        } catch (ArithmeticException e) {
            System.out.println("Error: division by zero");
        }
    }

    public static int divide(int a, int b) {
        return a / b;
    }
}
Ing conto iki, kita wis nambahake konstruksi nyoba-nyekel kanggo nangani pengecualian divisi-by-nol. Secara ringkes, try-catch-finally minangka konstruksi basa pemrograman Jawa sing ngidini sampeyan nangani pengecualian lan nglakokake kode tanpa preduli manawa ana pengecualian utawa ora. try-catch-finally kasusun saka telung blok:
  • Blok nyoba . Kode sing bisa mbebayani lagi dieksekusi ing kene. Iki minangka kode sing bisa mbuwang pengecualian. Yen ana pangecualian ing blok nyoba , eksekusi kode ing blok kasebut dibatalake, lan kontrol ditransfer menyang blok nyekel.
  • Blok nyekel . Ing kene pengecualian sing dibuwang ditangani. Ing pamblokiran nyekel , sampeyan bisa nemtokake sing pangecualian kanggo nyekel lan apa logika kanggo nglakokaké nalika kejiret.
  • Blok pungkasan . Iki dieksekusi tanpa preduli manawa ana pangecualian utawa ora. Blok pungkasan digunakake, contone, kanggo ngeculake sumber daya (kayata nutup file utawa soket) sing diparengake ing blok coba. Sampeyan bisa ngilangi blok iki.
Konstruksi try -catch-finally ngidini kontrol sing luwih tepat babagan eksekusi program yen ana kahanan sing luar biasa lan mbantu nyegah mandap program sing ora dikarepke yen ana kesalahan. Saiki, ayo bali menyang conto. Yen divisi dening nul occurs sak cara dibagi, ArithmeticException bakal di buwang, kang kejiret dening pemblokiran nyekel. Ing blok nyekel , kita mung nyithak pesen kesalahan menyang console. Yen ora ana pangecualian, program bakal nerusake eksekusi.

mbuwang tembung kunci

Tembung kunci mbuwang digunakake ing tandha metode. Yen mangkono, tegese ana pengecualian ing metode kasebut. Iki bisa nyebarake pangecualian ing tumpukan telpon lan nuduhake yen pangecualian ora perlu ditangani ing cara saiki. Ing Jawa, "uncalan" uga bisa digunakake kanggo nyebut pangecualian khusus sing ditetepake ing program. Contone, cara bisa nindakake divisi saka rong nomer nanging mbuwang IllegalArgumentException yen argumen kapindho nol:
public static double divide(double a, double b) throws IllegalArgumentException {
    if (b == 0) {
        throw new IllegalArgumentException("Division by zero is not allowed");
    }
    return a / b;
}
Cara iki nggunakake tembung kunci uncalan kanggo nunjukake yen IllegalArgumentException bisa dibuwang yen argumen kapindho null. Yen pangecualian kasebut kedadeyan nalika nglakokake metode kasebut, bakal diterusake menyang metode panggilan kanggo diproses. Tuladha cara nelpon:
public static void main(String[] args) {
    double result = 0;
    try {
        result = divide(10, 0);
    } catch (IllegalArgumentException e) {
        System.out.println("Error: " + e.getMessage());
    }
    System.out.println("Result: " + result);
}
Ing conto iki, metode divide () diarani karo argumen 10 lan 0, sing bakal mbuwang IllegalArgumentException amarga divisi dening nol ora mungkin. Pangecualian bakal kejiret dening blok try-catch , lan pesen kesalahan bakal ditampilake. Program bakal kasil ing Nilai saka nul wiwit pangecualian mungkasi eksekusi cara dibagi () .
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar