תכנות מתקדם ב-Java/חריגות זמן ריצה: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
Johnny Zoo (שיחה | תרומות)
מאין תקציר עריכה
Johnny Zoo (שיחה | תרומות)
אין תקציר עריכה
שורה 102:
עם זאת, חריגות הן אובייקטים, ושימוש בהן כרוך בעלות מסויימת מבחינת זיכרון וזמן ריצה, לכן כדאי להשתמש בחריגות רק כאשר הן נחוצות.
 
דוגמה (מוקצנת מעט) לשימוש מיותר בחריגה:
<source lang = "java">
import java.util.Scanner;
 
public class BadExceptionExample {
 
public static void main(String[] args) {
boolean flag = false;
Scanner s = new Scanner(System.in);
int num = 0;
while(!flag) {
try {
System.out.println("Enter a number between 0 and 10: ");
num = s.nextInt();
if(num < 0 || num > 10) throw new Exception();
flag = true;
} catch(Exception e) {
flag = false;
}
}
System.out.println("Your number: "+num);
}
}
 
</source>
 
זוהי דרך גרועה להשתמש בחריגות, מכיוון שניתן היה לבצע את אותה פעולה בצורה פשוטה וחסכונית יותר עם בדיקה פשוטה. נראה דוגמה לשימוש ראוי יותר:
 
<source lang = "java">
import java.util.Scanner;
 
public class BadExceptionExample {
 
public static void main(String[] args) {
boolean flag = false;
Scanner s = new Scanner(System.in);
int num = 0;
do {
System.out.println("Enter a number between 0 and 10: ");
String tmp = s.next();
try {
num = Integer.parseInt(tmp);
flag = true;
} catch(NumberFormatException e) {
flag = false;
}
} while(!flag || num < 0 || num > 10);
System.out.println("Your number: "+num);
}
}
 
</source>
בדוגמה הזאת השתמשנו בחריגות שזורקת השיטה {{קוד בשורה|parseInt}} כדי לוודא שהמשתמש אכן הכניס מספר שלם ולא משהו אחר.
 
===הכרזה על חריגות שיזרקו===
 
 
 
===היררכייה של חריגות===