ה Java זורק מילת מפתח משמש להכרזה על חריג. זה נותן מידע למתכנת שיכול להתרחש חריג. לכן, עדיף למתכנת לספק את קוד הטיפול בחריגים כדי שניתן יהיה לשמור על הזרימה הרגילה של התוכנית.
טיפול בחריגים משמש בעיקר לטיפול בחריגים שנבדקו. אם יש חריג לא מסומן כמו NullPointerException, אשמת המתכנתים היא שהוא לא בודק את הקוד לפני השימוש בו.
css עבור מודגש
תחביר של זריקות Java
return_type method_name() throws exception_class_name{ //method code }
על איזה חריג יש להכריז?
שנים: מסומן חריג בלבד, כי:
היתרון של Java זורק מילת מפתח
כעת ניתן להפיץ חריג מסומן (להעביר בערימת שיחה).
הוא מספק מידע למתקשר של השיטה על החריג.
Java זורק דוגמה
בוא נראה את הדוגמה של פסקת זריקה של Java שמתארת שניתן להפיץ חריגים מסומנים על ידי מילת מפתח זריקה.
Testthrows1.java
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...'); } }בדוק את זה עכשיו
תְפוּקָה:
exception handled normal flow...
כלל: אם אנו קוראים לשיטה שמצהירה על חריגה, עלינו לתפוס או להכריז על החריג.
ישנם שני מקרים:
מקרה 1: טיפול בחריג באמצעות בלוק טרי-catch
במקרה שאנו מטפלים בחריג, הקוד יבוצע בסדר בין אם החריגה מתרחשת במהלך התוכנית או לא.
המרת int ל-Java מחרוזת
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...'); } }בדוק את זה עכשיו
תְפוּקָה:
exception handled normal flow...
מקרה 2: הכרז חריג
- במקרה שנכריז על החריג, אם החריגה לא תתרחש, הקוד יבוצע בסדר.
- במקרה שנכריז על החריג והחריג מתרחש, הוא ייזרק בזמן ריצה מכיוון זורק אינו מטפל בחריג.
בואו נראה דוגמאות לשני התרחישים.
המרת int למחרוזת ב-java
א) אם לא מתרחש חריג
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...'); } }בדוק את זה עכשיו
תְפוּקָה:
device operation performed normal flow...
ב) אם מתרחש חריג
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...'); } }בדוק את זה עכשיו
תְפוּקָה:
ההבדל בין זריקה לזריקה
לחץ עליי לפרטיםשאלה) האם נוכל לזרוק מחדש חריג?
כן, על ידי זריקת אותו חריג בבלוק ה-catch.