Dart:
טיפול בשגיאות

איך לעשות זאת:

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

Try-Catch

השתמשו ב-try-catch כדי לתפוס חריגים ולמנוע מהם לקרוס את היישום שלכם:

try {
  var result = 100 ~/ 0; // ניסיון חלוקה באפס, מזריק חריג
} catch (e) {
  print('נתפס חריג: $e'); // מטפל בחריג
}

פלט לדוגמה: נתפס חריג: IntegerDivisionByZeroException

חריג ספציפי

כדי לטפל בחריגים ספציפיים, יש לציין את החריג אחרי ה-catch:

try {
  var result = 100 ~/ 0;
} on IntegerDivisionByZeroException {
  print('לא ניתן לחלק באפס.'); // מטפל באופן ספציפי בחריגי חלוקה באפס
}

פלט לדוגמה: לא ניתן לחלק באפס.

מעקב אחר ריצה

כדי לקבל מעקב אחר ריצה לצורך ניפוי באגים, השתמשו בפרמטר שני בבלוק ה-catch:

try {
  var result = 100 ~/ 0;
} catch (e, s) {
  print('חריג: $e');
  print('מעקב אחר ריצה: $s'); // מדפיס מעקב אחר ריצה לצורך ניפוי באגים
}

Finally

השתמשו ב-finally כדי לבצע קוד אחרי try/catch, ללא תלות אם נזרק חריג:

try {
  var result = 100 ~/ 0;
} catch (e) {
  print('נתפס חריג: $e');
} finally {
  print('זה תמיד מתבצע.'); // קוד ניקוי או שלבים סופיים
}

פלט לדוגמה:

נתפס חריג: IntegerDivisionByZeroException
זה תמיד מתבצע.

ספריות צד שלישי

אף על פי שספריית הליבה של Dart חזקה לטיפול בשגיאות, ניתן גם להשתמש בחבילות צד שלישי כמו dartz לתכנות פונקציונלי שמציג רעיונות כמו Either ו-Option שניתן להשתמש בהם לטיפול בשגיאות. הנה דוגמה לשימוש ב-dartz לטיפול בשגיאות:

  1. הוסיפו את dartz לקובץ pubspec.yaml שלכם תחת תלויות:
dependencies:
  dartz: ^0.10.0
  1. השתמשו ב-Either לטיפול חסד בשגיאות בקוד Dart שלכם:
import 'package:dartz/dartz.dart';

Either<String, int> divide(int dividend, int divisor) {
  if (divisor == 0) {
    return Left('לא ניתן לחלק באפס.');
  } else {
    return Right(dividend ~/ divisor);
  }
}

void main() {
  final result = divide(100, 0);
  result.fold(
    (left) => print('שגיאה: $left'), 
    (right) => print('תוצאה: $right')
  );
}

פלט לדוגמה: שגיאה: לא ניתן לחלק באפס.

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