Try without catch or throws?

The implementation of getCrimes includes a try/finally block:

    public List<Crime> getCrimes() {
    List<Crime> crimes = new ArrayList<Crime>();
    CrimeCursorWrapper cursor = queryCrimes(null, null);
    try {
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            crimes.add(cursor.getCrime());
            cursor.moveToNext();
        }
    } finally {
        cursor.close();
    }
    return crimes;
}

What possibly throws an exception here? Why does the author choose to use a try/finally block here, without a catch or a throws attribute on the method signature? This is also done in the getCrime method.

getString(), getLong() and getInt() methods used in .getCrime() can throws an exception when the column value is null or the column type is not valid type.

The methods wrapped in try can throw an unchecked exception, that does not need caught or marked with a throws.

The finally block is always executed so it will handle unchecked exceptions as well