What does it mean that 'throw' is an expression in Kotlin?
In Kotlin, 'throw' can be used as an expression, meaning it can be part of other expressions like assignments or return statements, not just a standalone statement.
Click to reveal answer
intermediate
How can you use 'throw' in an assignment in Kotlin?
You can assign a value or throw an exception in one line, for example: val x = someValue ?: throw IllegalArgumentException("Value required")
Click to reveal answer
intermediate
Why is 'throw' being an expression useful in Kotlin?
It allows more concise and readable code by combining error handling with expressions, reducing the need for separate if-else blocks.
Click to reveal answer
beginner
Can 'throw' be used inside a return statement in Kotlin?
Yes, you can write return throw Exception("Error") because 'throw' is an expression that never returns normally.
Click to reveal answer
advanced
What type does the 'throw' expression have in Kotlin?
'throw' has the special type 'Nothing' in Kotlin, which means it never returns normally and can be used anywhere a value is expected.
Click to reveal answer
In Kotlin, what type does the 'throw' expression have?
ANothing
BUnit
CAny
DVoid
✗ Incorrect
'throw' has the type 'Nothing' which means it never returns normally and can be used as an expression anywhere.
Which of the following is a valid use of 'throw' as an expression in Kotlin?
Aval x = value ?: throw IllegalArgumentException("Missing")
Bthrow IllegalArgumentException("Missing") val x = 5
Cval x = throw IllegalArgumentException("Missing") ?: 5
Dthrow is only a statement, not an expression
✗ Incorrect
Option A correctly uses 'throw' as an expression in the Elvis operator to throw an exception if value is null.
Why can 'throw' be used in places where a value is expected?
ABecause Kotlin treats 'throw' as a function
BBecause 'throw' returns a default value
CBecause 'throw' has the type 'Nothing' which fits anywhere
DBecause 'throw' is ignored by the compiler
✗ Incorrect
'throw' has the special type 'Nothing' which means it never returns normally and can be used wherever a value is expected.
Which statement about 'throw' in Kotlin is true?
A'throw' can only be used as a standalone statement
B'throw' returns a Boolean value
C'throw' is deprecated in Kotlin
D'throw' can be used as an expression in assignments and returns
✗ Incorrect
'throw' can be used as an expression, for example in assignments or return statements.
What benefit does 'throw' as an expression provide in Kotlin?
AIt makes code longer and more complex
BIt allows combining error handling with expressions for concise code
CIt disables exception handling
DIt forces all exceptions to be checked
✗ Incorrect
'throw' as an expression lets you write shorter, clearer code by combining error handling with expressions.
Explain how 'throw' being an expression changes the way you write Kotlin code.
Think about how you can combine throwing exceptions with other expressions.
You got /4 concepts.
Describe the type of 'throw' in Kotlin and why it allows 'throw' to be used anywhere a value is expected.
Consider what 'Nothing' means in Kotlin's type system.
You got /3 concepts.
Practice
(1/5)
1.
What does the throw keyword do when used as an expression in Kotlin?
easy
A. It declares a new variable.
B. It returns a value from a function.
C. It immediately stops execution and throws an exception.
D. It creates a new thread.
Solution
Step 1: Understand the role of throw
The throw keyword is used to signal an error by throwing an exception.
Step 2: Recognize its effect in expressions
When used as an expression, throw stops the current execution and throws the specified exception immediately.
Final Answer:
It immediately stops execution and throws an exception. -> Option C
Quick Check:
throw = stops and throws error [OK]
Hint: Throw always stops execution and signals an error [OK]
Common Mistakes:
Thinking throw returns a normal value
Confusing throw with return
Assuming throw creates variables
2.
Which of the following is the correct way to use throw as an expression in Kotlin?
val number = if (input > 0) input else ???
easy
A. throw IllegalArgumentException("Input must be positive")
B. return IllegalArgumentException("Input must be positive")
C. println("Input must be positive")
D. throw new Exception("Input must be positive")
Solution
Step 1: Check Kotlin syntax for throw expression
In Kotlin, throw is used without new keyword and can be used as an expression.
Step 2: Match the correct usage in the if-else expression
The correct syntax is throw IllegalArgumentException("message") without new and it fits as an expression in else branch.
Final Answer:
throw IllegalArgumentException("Input must be positive") -> Option A
Quick Check:
Throw expression syntax = throw IllegalArgumentException("Input must be positive") [OK]
Hint: Use throw without 'new' keyword in Kotlin [OK]
Common Mistakes:
Using 'new' keyword with throw
Using return instead of throw
Trying to print error instead of throwing
3.
What will be the output of this Kotlin code?
fun getName(name: String?): String {
return name ?: throw IllegalArgumentException("Name required")
}
fun main() {
println(getName(null))
}
medium
A. Compilation error
B. Name required
C. null
D. Exception in thread "main" java.lang.IllegalArgumentException: Name required
Solution
Step 1: Analyze the Elvis operator with throw
The expression name ?: throw IllegalArgumentException("Name required") returns name if not null, else throws the exception.
Step 2: Check the input and output
Since getName(null) is called, name is null, so the exception is thrown and program crashes with that message.
Final Answer:
Exception in thread "main" java.lang.IllegalArgumentException: Name required -> Option D
Quick Check:
Throw in Elvis operator throws exception [OK]
Hint: Elvis ?: with throw throws exception if left is null [OK]
Common Mistakes:
Expecting null to print
Thinking exception message prints normally
Assuming code compiles but returns empty string
4.
Identify the error in this Kotlin code snippet:
val age = 20
val validAge = if (age >= 18) age else throw "Age must be 18 or older"
medium
A. Cannot throw a String, must throw an Exception object.
B. The if expression is missing braces.
C. The variable age should be nullable.
D. The else branch should return a value, not throw.
Solution
Step 1: Check the throw expression type
In Kotlin, throw must throw an object of type Throwable, not a plain String.
Step 2: Identify the error in else branch
The code tries to throw a String literal, which is invalid and causes a compilation error.
Final Answer:
Cannot throw a String, must throw an Exception object. -> Option A
Quick Check:
Throw must be Exception, not String [OK]
Hint: Throw only Exception objects, not strings [OK]
Common Mistakes:
Throwing plain strings instead of exceptions
Missing braces but code compiles anyway
Confusing throw with return
5.
Given this Kotlin function:
fun parseNumber(input: String?): Int {
val number = input?.toIntOrNull() ?: throw NumberFormatException("Invalid number")
return number
}
What will parseNumber(null) do, and why is throw used as an expression here?
hard
A. Compiles but causes runtime error unrelated to throw.
B. Throws NumberFormatException because input is null; throw used to combine error and assignment.
C. Returns null because input is nullable; throw is a statement here.
D. Returns 0 because null converts to zero; throw is ignored.
Solution
Step 1: Understand the Elvis operator with throw
The expression input?.toIntOrNull() ?: throw NumberFormatException("Invalid number") tries to convert input to Int or throws if null or invalid.
Step 2: Analyze behavior when input is null
Since input is null, toIntOrNull() returns null, so the throw expression executes, throwing the exception immediately.
Step 3: Reason why throw is used as expression
Using throw as expression allows combining error handling with assignment in one line, making code concise and readable.
Final Answer:
Throws NumberFormatException because input is null; throw used to combine error and assignment. -> Option B
Quick Check:
Throw expression combines error and value assignment [OK]
Hint: Throw as expression lets you handle errors inline [OK]
Common Mistakes:
Thinking null converts to zero
Confusing throw as statement only
Ignoring exception thrown on null input
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.