When the return value of a function call contains the operation status code, this value should be tested to make sure the operation completed successfully.
This rule raises an issue when the return values of the following are ignored:
java.io.File operations that return a status code (except mkdirs) Iterator.hasNext() Enumeration.hasMoreElements() Lock.tryLock() Condition.await* methods CountDownLatch.await(long, TimeUnit) Semaphore.tryAcquire BlockingQueue: offer, remove
fun doSomething(file: File, lock: Lock) {
file.delete() // Noncompliant
// ...
lock.tryLock() // Noncompliant
}
fun doSomething(file: File, lock: Lock) {
if (!file.delete()) {
// file delete failed; take appropriate action
}
if (!lock.tryLock()) {
// lock failed; take appropriate action
}
}
Although these resources talk about Java, the underlying information concerning the JVM is just as relevant for Kotlin.