בלוק Finally
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Java של Coddy. שיעור 41 מתוך 59.
בלוק finally מכיל קוד שיופעל לאחר בלוקי try-catch, בין אם מתרחשת חריגה ובין אם לא. משתמשים בו בדרך כלל לפעולות ניקוי כמו סגירת קבצים או חיבורי מסד נתונים.
הנה המבנה הבסיסי של בלוק try-catch-finally:
try {
// קוד שעלול לזרוק חריגה
} catch (ExceptionType e) {
// קוד לטיפול בחריגה
} finally {
// קוד שמתבצע תמיד
}בואו נראה דוגמה עם מונה:
int counter = 0;
try {
int result = 10 / 0;
// פעולה זו תזרוק חריגה
counter = 1;
} catch (ArithmeticException e) {
counter = 2;
} finally {
counter = 3;
// פעולה זו תתבצע תמיד
}לאחר הרצת הקוד שלעיל, counter מכיל:
3
הטיפוס שבסוגריים של catch קובע באילו שגיאות הבלוק הזה מטפל. שתי שגיאות נפוצות הן ArithmeticException, שנזרקת בחלוקה של מספר שלם באפס, ו-NumberFormatException, שנזרקת על ידי Integer.parseInt() כשהטקסט אינו מספר. catch יחיד יכול לטפל בכמה טיפוסים בו-זמנית:
try {
int value = Integer.parseInt(text);
int result = 10 / value;
} catch (ArithmeticException | NumberFormatException e) {
// מטפל בשניהם
} finally {
// מתבצע תמיד
}תפיסה של Exception במקום זאת רחבה יותר: היא מטפלת בשניהם ובכל חריגה אחרת.
אתגר
קלצרו מתודה בשם processNumber שמקבלת שני ארגומנטים:
- מחרוזת מסוג String (
number) להמרה למספר שלם - ערך בוליאני (
shouldThrow) שקובע אם יש לזרוק חריגה
המתודה צריכה:
- לאתחל משתנה בשם result לערך 0
- בבלוק try:
- אם shouldThrow הוא true, לחלק 10 ב-0
- אחרת, להמיר את מחרוזת המספר למספר שלם ולשמור אותו ב-result
- בבלוק catch: להגדיר את result לערך -1
- בבלוק finally: להוסיף 100 ל-result
- להחזיר את result כמחרוזת
נסו בעצמכם
import java.util.Scanner;
public class Main {
public static String processNumber(String number, boolean shouldThrow) {
// כתבו כאן את הקוד שלכם
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String number = scanner.nextLine();
boolean shouldThrow = Boolean.parseBoolean(scanner.nextLine());
System.out.println(processNumber(number, shouldThrow));
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום — מערכים דו־ממדייםחיבור וחיסור מטריצותמערכים מדורגיםמערכים תלת־ממדיים ומעבר להםתבניות נפוצות במערכים דו־ממדייםסיכום — כל מה שצריך לדעת על מערכיםתרגלו בעצמכם: קומפיילר Java אונליין