require is used to check arguments passed to a function.
check is used to check the state of the program.
Examples
This checks if the age is not negative before setting it.
Kotlin
fun setAge(age: Int) {
require(age >= 0) { "Age must be non-negative" }
println("Age set to $age")
}
This checks if the value is not zero before processing.
Kotlin
fun process(value: Int) {
check(value != 0) { "Value must not be zero" }
println("Processing $value")
}
This immediately stops the program with an error message.
Kotlin
fun failNow() {
error("This function always fails")
}
Sample Program
This program tries to set an age. The first call works because 25 is valid. The second call fails because -5 is not allowed.
Kotlin
fun setAge(age: Int) {
require(age >= 0) { "Age must be non-negative" }
println("Age set to $age")
}
fun main() {
setAge(25) // This works
setAge(-5) // This causes an error
}
OutputSuccess
Important Notes
require throws IllegalArgumentException if the condition is false.
check throws IllegalStateException if the condition is false.
error throws IllegalStateException immediately with the message.
Summary
Use require to check function arguments.
Use check to check the program state.
Use error to stop the program with a message.
Practice
(1/5)
1. What is the primary purpose of the require function in Kotlin?
easy
A. To log warnings without stopping the program
B. To verify the internal state of the program
C. To stop the program immediately with an error message
D. To check if function arguments meet certain conditions
Solution
Step 1: Understand require usage
require is used to check if the inputs to a function are valid before proceeding.
Step 2: Differentiate from other preconditions
check is for program state, and error stops the program immediately. require is specifically for argument validation.
Final Answer:
To check if function arguments meet certain conditions -> Option D
Quick Check:
require = argument check [OK]
Hint: Require checks function inputs are valid before running [OK]
Common Mistakes:
Confusing require with check for program state
Thinking error is for argument validation
Assuming require stops program immediately
2. Which of the following is the correct syntax to use check in Kotlin to verify a condition with a lazy message?
easy
A. check(value > 0, "Value must be positive")
B. check { value > 0, "Value must be positive" }
C. check(value > 0) { "Value must be positive" }
D. check(value > 0); "Value must be positive"
Solution
Step 1: Recall check function signature
check takes a Boolean condition and a lambda returning a message string if false.
Step 2: Match syntax with options
check(value > 0) { "Value must be positive" } uses check(condition) { "message" } which is correct Kotlin syntax.
Final Answer:
check(value > 0) { "Value must be positive" } -> Option C
Quick Check:
check syntax = condition + lambda message [OK]
Hint: Use check(condition) { "message" } syntax [OK]
Common Mistakes:
Passing message as second argument instead of lambda
Using comma inside lambda incorrectly
Omitting braces for message lambda
3. What will be the output of this Kotlin code?
fun test(x: Int) {
require(x > 0) { "x must be positive" }
check(x < 10) { "x must be less than 10" }
println("x is valid: $x")
}
test(15)
medium
A. IllegalStateException: x must be less than 10
B. IllegalArgumentException: x must be positive
C. No output, program stops silently
D. x is valid: 15
Solution
Step 1: Evaluate require(x > 0)
Since 15 > 0, require passes without exception.
Step 2: Evaluate check(x < 10)
15 is not less than 10, so check throws IllegalStateException with message "x must be less than 10".
Final Answer:
IllegalStateException: x must be less than 10 -> Option A
Quick Check:
require passes, check fails with IllegalStateException [OK]