特定のエラーを捕捉する
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 52/63。
try ブロックは、例外をスローする可能性のあるコードを実行します。catch は一致する例外を処理し、try/catch の後から実行を続けられるようにします。toInt から発生する NumberFormatException など、予想される特定の例外をキャッチして、無関係なプログラミングエラーが黙って隠されないようにします。
mainの内部:
try {
println("oops".toInt())
} catch (error: NumberFormatException) {
println("invalid")
}解析はprintlnが数値を受け取る前に例外をスローするため、該当するcatchが代替メッセージを出力します。
操作でスローされることが予想される特定の例外を捕捉します。
チャレンジ
中級パラメータ text: Stringを使用してparseMessageを完成させてください。text.toInt()の周囲でtry/catchを使用し、トリミングは行わないでください。成功時は、解析された整数でnを置き換えたvalue=nを返し、NumberFormatExceptionがスローされた場合はinvalidを返してください。
上記でより厳しい上限が指定されていない限り、コレクションは各レベルで最大100個の要素を含み、整数の引数および整数コレクションの値は-1000から1000の範囲です。解析用に渡されるテキストには、説明されているように無効な表現や範囲外の表現が含まれる場合があります。
型Stringの値を返してください。提供されている入力/出力コードはそのまま使用してください。スカラー引数は1行に1つずつ読み取られます。リストは要素数の後に要素が続く形式で始まり、マップはエントリ数の後に各キーと値が続く形式で始まります。ネストされたリストでは、各行について要素数と要素の形式を繰り返します。提供されているmainは、戻り値に続けて改行を1つ出力します。リストにはKotlin標準の角括弧形式を使用し、追加のラベルは出力しないでください。
自分で試してみよう
fun parseMessage(text: String): String {
// ここに解答を書いてください。
return ""
}
fun main() {
val text = readLine().orEmpty()
println(parseMessage(text))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド