הפונקציה error()
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 32 מתוך 54.
לפעמים הקוד שלך צריך לעצור מיד כשמשהו משתבש. Lua מספקת את הפונקציה error() כדי לטפל במצבים כאלה באמצעות העלאת שגיאה ועצירת ביצוע הסקריפט.
הפונקציה error() מקבלת הודעה כארגומנט ועוצרת את התוכנית, תוך הצגת ההודעה כדי לציין מה השתבש. כך נראית התחביר הבסיסי:
error("Something went wrong!")הדבר שימושי במיוחד בעת אימות קלטים של פונקציות. לדוגמה, אם פונקציה מצפה למספר חיובי אך מקבלת מספר שלילי, אפשר להשתמש ב־error() כדי למנוע המשך ביצוע:
function calculateSquareRoot(num)
if num < 0 then
error("Cannot calculate square root of a negative number")
end
return math.sqrt(num)
endכאשר קוראים ל־error(), התוכנית נעצרת מיד בנקודה זו ומציגה את הודעת השגיאה המותאמת אישית שלך. כך קל יותר לזהות בעיות בשלב מוקדם ולהבהיר מה השתבש, והקוד שלך נעשה אמין יותר וקל יותר לניפוי שגיאות.
error() מיועדת לטעויות אמיתיות, למשל כשקוראים לפונקציה עם סוג ערך שגוי. במקרים של כישלון שהקורא אמור לצפות להם, כמו פריט חסר או קלט שגוי מהמשתמש, קוד Lua בדרך כלל לא מעלה שגיאה. במקום זאת, הפונקציה מחזירה nil והודעה, והקורא בודק את התוצאה:
function findItem(inventory, name)
if inventory[name] == nil then
return nil, "No item called " .. name
end
return inventory[name]
end
local count, err = findItem({potion = 3}, "sword")
if count then
print("You have " .. count)
else
print(err) -- אין פריט בשם sword
endהפונקציות המובנות של Lua פועלות באותו אופן: tonumber("abc") מחזירה nil, ו-io.open() מחזירה nil והודעה כאשר היא לא מצליחה לפתוח קובץ.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1איטרציה מתקדמת בטבלאות
איטרציה באמצעות pairs()איטרציה באמצעות ipairs()pairs() לעומת ipairs()סיכום – גיליון דמות2פונקציות נוספות של ספריית הטבלאות
table.concat()בניית טבלה ו־unpack()table.sort()מיון מותאם אישית באמצעות פונקציותסיכום – לוח שיאיםתרגלו בעצמכם: קומפיילר Lua אונליין