Menu
Coddy logo textTech

בלוק ה-try-catch

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 39 מתוך 65.

עכשיו, כשאתה מבין מהן חריגות, בוא נלמד איך לטפל בהן בצורה מסודרת באמצעות בלוק try-catch. זהו הכלי הבסיסי שמונע מהתוכנית שלך לקרוס כשמשהו משתבש.

בלוק try-catch פועל בכך שהוא עוטף קוד שעלול להיות בעייתי במקטע try. אם מתרחש חריג, במקום שהתוכנית שלך תקרוס, Dart עובר מיד למקטע catch, שבו אפשר לטפל בשגיאה כראוי.

try {
  // קוד שעלול לגרום לחריגה
  int number = int.parse("abc");
} catch (e) {
  // קוד שרץ אם מתרחשת חריגה
  print("Something went wrong: $e");
}

בדוגמה הזאת, ניסיון להמיר את המחרוזת "abc" למספר שלם היה גורם בדרך כלל לקריסה של התוכנית. עם זאת, מכיוון שהיא עטופה בבלוק try, החריגה נתפסת ומטופלת במקום זאת בבלוק catch. המשתנה e מכיל מידע על מה השתבש.

הגישה הזו מאפשרת לתוכנית שלך להמשיך לפעול גם כשמתרחשים מצבים בלתי צפויים, וכך הופכת את הקוד שלך לעמיד וידידותי יותר למשתמש.

challenge icon

אתגר

קל

צרו תוכנית שממירה בבטחה מחרוזות קלט של משתמשים למספרים באמצעות בלוק try-catch. התוכנית צריכה לטפל במקרים שבהם הקלט אינו מספר תקין ולמנוע מהתוכנית לקרוס.

  1. קראו מחרוזת קלט שמייצגת מספר שיש להמיר למספר שלם
  2. השתמשו בבלוק try-catch כדי לנסות בבטחה לבצע את ההמרה באמצעות int.parse()
  3. אם ההמרה מצליחה, חשבו את ריבוע המספר (הכפילו אותו בעצמו)
  4. אם ההמרה נכשלת ומתרחשת חריגה, טפלו בשגיאה בצורה נאותה
  5. הציגו את התוצאה או את הודעת השגיאה המתאימה בפורמט המדויק שמוצג להלן

לדוגמה, אם הקלט הוא "5", התוכנית צריכה להציג:

Processing input: 5
Conversion successful!
The square of 5 is: 25

אם הקלט הוא "abc", התוכנית צריכה להציג:

Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integer

אם הקלט הוא "12", התוכנית צריכה להציג:

Processing input: 12
Conversion successful!
The square of 12 is: 144

על התוכנית להשתמש בבלוק try-catch כדי לעטוף את פעולת int.parse(). במקטע try, נסו להמיר את מחרוזת הקלט למספר שלם ולחשב את הריבוע שלו. במקטע catch, טפלו בכל חריגה שמתרחשת במהלך ההמרה והציגו הודעת שגיאה מתאימה. התוכנית צריכה להמשיך לפעול כרגיל, בין שההמרה מצליחה ובין שהיא נכשלת.

נסו בעצמכם

import 'dart:io';

void main() {
  // קראו את מחרוזת הקלט
  String? input = stdin.readLineSync();
  
  // הציגו הודעת עיבוד
  print('Processing input: $input');
  
  // TODO: כתבו את הקוד שלכם למטה
  // השתמשו בבלוק try-catch כדי להמיר את הקלט בבטחה למספר שלם
  // חשבו את הריבוע אם ההמרה הצליחה
  // טפלו בכל חריגה שמתרחשת במהלך ההמרה
  
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Dart אונליין