Menu
Coddy logo textTech

לכידת שגיאות ספציפיות

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 52 מתוך 63.

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

בתוך main:

try {
    println("oops".toInt())
} catch (error: NumberFormatException) {
    println("invalid")
}

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

יש לתפוס את החריגה הספציפית שהפעולה שלך צפויה לזרוק.

challenge icon

אתגר

בינוני

השלם את parseMessage עם הפרמטרים text: String. השתמש ב-try/catch סביב text.toInt(), בלי להסיר רווחים. החזר value=n במקרה של הצלחה, כאשר n מוחלף במספר השלם שפוענח, או invalid כאשר נזרקת NumberFormatException.

אלא אם צוין לעיל טווח מחמיר יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים של מספרים שלמים וערכים של מספרים שלמים באוספים נמצאים בטווח שבין ‎-1000 ל-1000. טקסט שסופק לפענוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.

החזר ערך מסוג String. השאר את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ולאחריו האיברים, ומפה מתחילה במספר הרשומות שלה ולאחריו כל מפתח וערך. רשימות מקוננות חוזרות על המבנה של מספר איברים ואחריו האיברים עבור כל שורה. הפונקציה main שסופקה מדפיסה את הערך המוחזר ואחריו תו שורה חדשה אחד. רשימות משתמשות בפורמט הסטנדרטי של Kotlin עם סוגריים מרובעים; אל תדפיס תוויות נוספות.

נסו בעצמכם

fun parseMessage(text: String): String {
    // כתבו כאן את הפתרון שלכם.
    return ""
}
fun main() {
    val text = readLine().orEmpty()
    println(parseMessage(text))
}
quiz iconבחנו את עצמכם

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

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

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