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
לטיפול בשגיאות:
- הוסיפו את
dartz
לקובץpubspec.yaml
שלכם תחת תלויות:
dependencies:
dartz: ^0.10.0
- השתמשו ב-
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
מייצג הצלחה. הדפוס הזה מאפשר טיפול בשגיאות באופן פונקציונלי יותר, מציע נקיון ושליטה על ניהול השגיאות.