יצירת שגיאות עם עיצוב
חלק מהיחידה יסודות במסלול ה-GO של Coddy. שיעור 107 מתוך 109.
יצירת שגיאות מעוצבות... מאפשרת לך לכלול ערכים דינמיים בהודעות שגיאה.
הפונקציה fmt.Errorf() יוצרת שגיאות עם מחרוזות מעוצבות, בדומה ל־fmt.Printf():
import (
"fmt"
)
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("cannot divide %d by zero", a)
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("Result:", result)
}
}הפלט יהיה:
Error: cannot divide 10 by zeroאתגר
מתחיליםבאתגר הזה תתרגלו יצירת הודעות שגיאה מעוצבות באמצעות הפונקציה fmt.Errorf. יש לכם תוכנית שבודקת שם משתמש, ועליכם ליצור הודעת שגיאה מתאימה כאשר שם המשתמש אינו תקין.
לתוכנית יש שם משתמש מוגדר מראש שקצר מדי (פחות מ-5 תווים). המשימה שלכם היא ליצור הודעת שגיאה מעוצבת שכוללת את שם המשתמש הלא תקין ואת האורך המינימלי הנדרש.
נסו בעצמכם
package main
import (
"fmt"
)
func main() {
// שם משתמש שהוגדר מראש והוא קצר מדי
username := "bob"
// האורך המינימלי הנדרש
minLength := 5
// בדקו אם username תקין
if len(username) < minLength {
// TODO: צרו שגיאה בפורמט באמצעות fmt.Errorf שכוללת:
// 1. את username הלא תקין
// 2. את האורך המינימלי הנדרש
// דוגמה לפורמט: "invalid username: [username] is too short, minimum length is [minLength]"
err := // הקוד שלכם כאן
// הדפיסו את השגיאה
fmt.Println(err)
} else {
fmt.Println("Username is valid!")
}
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
4אופרטורי השוואה ולוגיקה
אופרטורי השוואה – חלק 1אופרטורי השוואה – חלק 2אופרטור AND לוגיאופרטור OR לוגיאופרטור NOT לוגייסודות קדימות אופרטוריםסיכום – ביצוע השוואות7זרימת בקרה: לולאות
הסבר על לולאת `for`לולאת `for` – בסיסיתלולאת `for` – תנאי בלבדמילת המפתח `break`מילת המפתח `continue`לולאות מקוננותסיכום – חזרה על פעולות2משתנים וסוגי נתונים בסיסיים
מהו משתנההסקת טיפוס באמצעות `:=`מספרים שלמים (int)מספרים בנקודה צפהערכים בוליאנייםמחרוזותערכי אפסקבועיםמוסכמות לשמותסיכום – משתנים וטיפוסים8פונקציות
הבנת פונקציותהצהרה על פונקציהקריאה לפונקציותפרמטרים של פונקציההחזרת ערך יחידהחזרת מספר ערכיםערכי החזרה בעלי שםיסודות תחום ההשפעה של פונקציהסיכום - יצירת קוד לשימוש חוזר11טיפוסים מורכבים: Slices
מבוא ל-Slicesהצהרת Literals של Sliceיצירת Slices באמצעות `make`אורך Slice לעומת קיבולתגישה לאיברים ב-Sliceהוספת איבריםחיתוך Slices/מערכים קיימיםמעבר על Slicesהעתקת Slicesסיכום – רשימות דינמיות14טיפול בסיסי בשגיאות
מושג השגיאותהממשק `error`פונקציות שמחזירות שגיאותבדיקת שגיאותיצירת שגיאות פשוטותיצירת שגיאות עם עיצובטיפול בסיסי בשגיאותסיכום – טיפול בבעיות3אופרטורים בסיסיים
אופרטורים אריתמטייםאופרטור חילוקאופרטור מודולואופרטור השמהאופרטורי השמה מורחבתהגדלה והקטנהסיכום – חישובים6זרימת בקרה: תנאים
פקודת `if`מילת המפתח `else`מילת המפתח `else if`הסתרת משתנים בתוך `if`אתחול משתניםפקודת `switch``switch` עם ביטויים`switch` ללא ביטוימילת המפתח `fallthrough`סיכום - קבלת החלטותתרגלו בעצמכם: קומפיילר Go אונליין