Bird
Raised Fist0
Kotlinprogramming~10 mins

RunCatching for safe execution in Kotlin - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to safely execute the block using RunCatching.

Kotlin
val result = runCatching([1] {
    val number = "123".toInt()
    number * 2
})
Drag options to blanks, or click blank then click option'
A{}
B()
C() ->
D() -> Unit
Attempts:
3 left
💡 Hint
Common Mistakes
Using incorrect lambda syntax like () -> Unit or {} which are not valid here.
2fill in blank
medium

Complete the code to get the result value or null if an exception occurs.

Kotlin
val result = runCatching {
    "abc".toInt()
}.[1]()
Drag options to blanks, or click blank then click option'
AgetOrNull
BgetOrThrow
CgetOrDefault
DgetOrElse
Attempts:
3 left
💡 Hint
Common Mistakes
Using getOrThrow() which throws the exception instead of returning null.
3fill in blank
hard

Fix the error in the code to handle failure with onFailure.

Kotlin
runCatching {
    val x = 10 / 0
}.[1] {
    println("Error: ${it.message}")
}
Drag options to blanks, or click blank then click option'
AonSuccess
BonFailure
CgetOrNull
DgetOrElse
Attempts:
3 left
💡 Hint
Common Mistakes
Using onSuccess which runs only if no exception occurred.
4fill in blank
hard

Fill both blanks to create a map of word lengths only for words longer than 3 characters.

Kotlin
val words = listOf("cat", "house", "dog", "elephant")
val lengths = words.associateWith { [1] }
    .filter { it.value [2] 3 }
Drag options to blanks, or click blank then click option'
Ait.length
B>
C<
Dit.size
Attempts:
3 left
💡 Hint
Common Mistakes
Using it.size which is invalid for String.
Using < instead of > in filter condition.
5fill in blank
hard

Fill all three blanks to safely get uppercase words longer than 4 characters.

Kotlin
val words = listOf("apple", "bat", "carrot", "dog")
val safeWords = runCatching {
    words.map { it.[1]() }
}.getOrElse { emptyList() }
.filter { it.length [2] 4 }
.associateWith { it.length [3] 0 }
Drag options to blanks, or click blank then click option'
Auppercase
B>
C*
Duppercase()
Attempts:
3 left
💡 Hint
Common Mistakes
Using uppercase without parentheses which is not a function call.
Using < instead of > in filter.
Using + or - instead of * in multiplication.

Practice

(1/5)
1. What is the main purpose of runCatching in Kotlin?
easy
A. To execute code and catch exceptions safely without crashing the program
B. To run code only if a condition is true
C. To create a new thread for running code
D. To convert a value to a string safely

Solution

  1. Step 1: Understand what runCatching does

    runCatching runs a block of code and catches any exceptions that happen inside it.
  2. Step 2: Identify the main purpose

    This helps keep the program running smoothly by handling errors safely without crashing.
  3. Final Answer:

    To execute code and catch exceptions safely without crashing the program -> Option A
  4. Quick Check:

    runCatching = safe execution [OK]
Hint: runCatching catches errors to keep code safe [OK]
Common Mistakes:
  • Thinking runCatching runs code conditionally
  • Confusing runCatching with threading
  • Assuming it converts types automatically
2. Which of the following is the correct syntax to use runCatching in Kotlin?
easy
A. val result = runCatching -> someFunction()
B. val result = runCatching(someFunction())
C. val result = runCatching { someFunction() }
D. val result = runCatching.someFunction()

Solution

  1. Step 1: Recall the syntax of runCatching

    runCatching takes a lambda block with curly braces to run code safely.
  2. Step 2: Match the correct syntax

    val result = runCatching { someFunction() } uses curly braces and calls someFunction() inside, which is correct.
  3. Final Answer:

    val result = runCatching { someFunction() } -> Option C
  4. Quick Check:

    runCatching uses braces { } [OK]
Hint: Use curly braces {} to pass code block to runCatching [OK]
Common Mistakes:
  • Using parentheses instead of braces
  • Trying to call runCatching like a function with arrow
  • Accessing runCatching as an object
3. What will be the output of this Kotlin code?
val result = runCatching { 10 / 0 }
println(result.isSuccess)
medium
A. true
B. null
C. Exception thrown
D. false

Solution

  1. Step 1: Analyze the code inside runCatching

    The code tries to divide 10 by 0, which causes an exception (ArithmeticException).
  2. Step 2: Understand runCatching result

    runCatching catches the exception, so no crash happens. The isSuccess property will be false because the block failed.
  3. Final Answer:

    false -> Option D
  4. Quick Check:

    Exception caught means isSuccess = false [OK]
Hint: Divide by zero causes failure, so isSuccess is false [OK]
Common Mistakes:
  • Expecting true because code runs
  • Thinking exception is thrown outside runCatching
  • Confusing isSuccess with isFailure
4. Identify the error in this Kotlin code using runCatching:
val result = runCatching {
    val number = "abc".toInt()
}
println(result.getOrNull())
medium
A. No error, prints null because conversion fails
B. Throws NumberFormatException outside runCatching
C. Syntax error in runCatching block
D. getOrNull() returns the string "abc"

Solution

  1. Step 1: Understand the code inside runCatching

    Trying to convert "abc" to Int causes NumberFormatException, but runCatching catches it.
  2. Step 2: Check what getOrNull() returns

    Since exception happened, getOrNull() returns null safely without crashing.
  3. Final Answer:

    No error, prints null because conversion fails -> Option A
  4. Quick Check:

    Exception caught means getOrNull() = null [OK]
Hint: runCatching catches exceptions, getOrNull returns null on failure [OK]
Common Mistakes:
  • Expecting exception to crash program
  • Thinking getOrNull returns original string
  • Assuming syntax error in code block
5. You want to safely parse a list of strings to integers using runCatching and collect only the successful results. Which Kotlin code snippet correctly does this?
hard
A. val numbers = list.map { runCatching { it.toInt() }.exceptionOrNull() }
B. val numbers = list.map { runCatching { it.toInt() }.getOrNull() }.filterNotNull()
C. val numbers = list.map { it.toInt() }.filter { it != null }
D. val numbers = list.map { runCatching { it.toInt() }.getOrThrow() }

Solution

  1. Step 1: Understand the goal

    We want to convert strings to integers safely, ignoring failures, and collect only successful integers.
  2. Step 2: Analyze each option

    val numbers = list.map { runCatching { it.toInt() }.getOrNull() }.filterNotNull() uses runCatching to catch exceptions, then getOrNull() returns integer or null, and filterNotNull() removes nulls, collecting only successful parses.
  3. Final Answer:

    val numbers = list.map { runCatching { it.toInt() }.getOrNull() }.filterNotNull() -> Option B
  4. Quick Check:

    Safe parse + filter null = val numbers = list.map { runCatching { it.toInt() }.getOrNull() }.filterNotNull() [OK]
Hint: Use getOrNull() then filterNotNull() to keep successful parses [OK]
Common Mistakes:
  • Using getOrThrow() which throws on failure
  • Filtering nulls before catching exceptions
  • Using exceptionOrNull() which returns exceptions, not values
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard