יסודות Try-Catch
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Java של Coddy. שיעור 40 מתוך 59.
בלוקים של try-catch ב-Java משמשים לטיפול בחריגות (שגיאות) שעלולות להתרחש במהלך הרצת התוכנית. הקוד שעלול להעלות חריגה נמצא בבלוק try, וקוד הטיפול בשגיאות נמצא בבלוק catch.
הנה המבנה הבסיסי של בלוק try-catch:
try {
// קוד שעלול לזרוק חריגה
} catch (ExceptionType e) {
// קוד לטיפול בחריגה
}בואו נראה זאת בפעולה עם Integer.parseInt(), שממירה מחרוזת למספר שלם:
String text = "abc";
try {
int number = Integer.parseInt(text);
System.out.println(number);
} catch (NumberFormatException e) {
System.out.println("Error: Not a valid number");
}לאחר הרצת הקוד שלמעלה, הפלט הוא:
Error: Not a valid number
אחרי try יחיד אפשר להוסיף כמה בלוקי catch, אחד לכל סוג חריגה. Java מריצה את הבלוק הראשון שהסוג שלו תואם לחריגה שנזרקה:
try {
int number = Integer.parseInt(text);
System.out.println(10 / number);
} catch (NumberFormatException e) {
System.out.println("Error: Not a valid number");
} catch (ArithmeticException e) {
System.out.println("Error: Division by zero");
}אתגר
קלצרו מתודה בשם divideNumbers שמקבלת שלושה ארגומנטים:
- מחרוזת (
num1) המייצגת את המספר הראשון - מחרוזת (
num2) המייצגת את המספר השני - מספר שלם (
index) המייצג אינדקס במערך
המתודה צריכה:
- ליצור מערך בגודל 2
- לשמור באינדקס הנתון את הערך השלם שהתקבל מפענוח
num1, מחולק בערך השלם שהתקבל מפענוחnum2 - להחזיר את הערך באינדקס הנתון
- לטפל בכל החריגות האפשריות, ולהחזיר במקום זאת את הודעת השגיאה המתאימה
ההודעות שיוחזרו צריכות להיות:
- עבור
NumberFormatException: "Error: Invalid number format" - עבור
ArithmeticException: "Error: Division by zero" - עבור
ArrayIndexOutOfBoundsException: "Error: Invalid array index" - במקרה של הצלחה: להחזיר את התוצאה כמחרוזת
נסו בעצמכם
import java.util.Scanner;
public class Main {
public static String divideNumbers(String num1, String num2, int index) {
// כתבו כאן את הקוד שלכם
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String num1 = scanner.nextLine();
String num2 = scanner.nextLine();
int index = Integer.parseInt(scanner.nextLine());
System.out.println(divideNumbers(num1, num2, index));
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מערכים רב־ממדיים
יסודות מערכים דו־ממדייםגישה לאיברים במערך דו־ממדילולאות מקוננות עם מערכים דו־ממדייםסיכום — מערכים דו־ממדייםחיבור וחיסור מטריצותמערכים מדורגיםמערכים תלת־ממדיים ומעבר להםתבניות נפוצות במערכים דו־ממדייםסיכום — כל מה שצריך לדעת על מערכיםתרגלו בעצמכם: קומפיילר Java אונליין