## Why is this an issue?

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()`
- non-void `Condition.await*` methods
- `CountDownLatch.await(long, TimeUnit)`
- `Semaphore.tryAcquire`
- `BlockingQueue`: `offer`, `remove`

### Noncompliant code example

    public void doSomething(File file, Lock lock) {
      file.delete();  // Noncompliant
      // ...
      lock.tryLock(); // Noncompliant
    }

### Compliant solution

    public void doSomething(File file, Lock lock) {
      if (!lock.tryLock()) {
        // lock failed; take appropriate action
      }
      if (!file.delete()) {
        // file delete failed; take appropriate action
      }
    }

## Resources

- CERT, EXP00-J. - Do not ignore values returned by methods
- CERT, FIO02-J. - Detect and handle file-related errors
- CWE - CWE-754 - Improper Check for Unusual Exceptional Conditions