How many times did you have to write code like this:
fun setCapacity(cap: Int) {
if (cap < 0) {
throw IllegalArgumentException()
}
...
}
Instead, you can check arguments with require():
fun setCapacity(cap: Int) {
require(cap > 0)
}
This makes the code a lot more fluent.
You can use require() to check for nested nulls:
fun printNameLength(p: Profile) {
require(p.firstName != null)
}
But there's also requireNotNull() for that:
fun printNameLength(p: Profile) {
requireNotNull(p.firstName)
}
Use check() to validate the state of your object. This is useful when you provide some object that the user may not have set up correctly:
private class HttpClient {
var body: String? = null
var url: String = ""
fun postRequest() {
check(body != null) {
"Body must be set in POST requests"
}
}
...