Java anahtar kelimeyi atar Bir istisna bildirmek için kullanılır. Programcıya bir istisnanın oluşabileceği bilgisini verir. Bu nedenle, programın normal akışının sürdürülebilmesi için programcının istisna işleme kodunu sağlaması daha iyidir.
İstisna İşleme esas olarak kontrol edilen istisnaları işlemek için kullanılır. NullPointerException gibi denetlenmeyen bir istisna meydana gelirse, kodu kullanılmadan önce kontrol etmemesi programcının hatasıdır.
sh betiğini çalıştırılabilir hale getirme
Java fırlatmalarının sözdizimi
return_type method_name() throws exception_class_name{ //method code }
Hangi istisna bildirilmelidir?
Yıllar: Yalnızca işaretlenen istisna, çünkü:
Java'nın avantajı anahtar kelimeyi atar
Artık Kontrol Edilen İstisna yayılabilir (çağrı yığınında iletilebilir).
Yöntemi çağıran kişiye istisna hakkında bilgi sağlar.
Java Örnek atar
İşaretli istisnaların throws anahtar sözcüğüyle yayılabileceğini açıklayan Java throws cümlesi örneğini görelim.
Testthrows1.java
c'de rastgele
import java.io.IOException; class Testthrows1{ void m()throws IOException{ throw new IOException('device error');//checked exception } void n()throws IOException{ m(); } void p(){ try{ n(); }catch(Exception e){System.out.println('exception handled');} } public static void main(String args[]){ Testthrows1 obj=new Testthrows1(); obj.p(); System.out.println('normal flow...'); } }Şimdi Test Edin
Çıktı:
exception handled normal flow...
Kural: Eğer istisna bildiren bir yöntemi çağırıyorsak, istisnayı ya yakalamamız ya da bildirmemiz gerekir.
İki durum var:
Durum 1: Try-catch bloğunu kullanarak İstisnaları İşleyin
İstisnayı ele almamız durumunda, program sırasında istisna meydana gelse de gelmese de kod düzgün bir şekilde yürütülecektir.
Testthrows2.java
import java.io.*; class M{ void method()throws IOException{ throw new IOException('device error'); } } public class Testthrows2{ public static void main(String args[]){ try{ M m=new M(); m.method(); }catch(Exception e){System.out.println('exception handled');} System.out.println('normal flow...'); } }Şimdi Test Edin
Çıktı:
exception handled normal flow...
Durum 2: İstisna Bildirmek
- İstisnayı bildirmemiz durumunda, istisna oluşmazsa kod düzgün yürütülecektir.
- İstisnayı bildirmemiz ve istisnanın oluşması durumunda, çalışma zamanında atılacaktır çünkü atar istisnayı işlemez.
Her iki senaryo için de örnekler görelim.
A) İstisna oluşmazsa
Testthrows3.java
import java.io.*; class M{ void method()throws IOException{ System.out.println('device operation performed'); } } class Testthrows3{ public static void main(String args[])throws IOException{//declare exception M m=new M(); m.method(); System.out.println('normal flow...'); } }Şimdi Test Edin
Çıktı:
latekste kısmi türev
device operation performed normal flow...
B) İstisna meydana gelirse
Testthrows4.java
import java.io.*; class M{ void method()throws IOException{ throw new IOException('device error'); } } class Testthrows4{ public static void main(String args[])throws IOException{//declare exception M m=new M(); m.method(); System.out.println('normal flow...'); } }Şimdi Test Edin
Çıktı:
Atma ve atma arasındaki fark
Ayrıntılar için beni tıklayınQue) Bir istisnayı yeniden düzenleyebilir miyiz?
Evet, aynı istisnayı catch bloğuna atarak.