         atIndex index: Int)
     throws -> Value
     {
-        try Value.decode(fromRow: self, atUncheckedIndex: _checkedIndex(index))
+        _checkIndex(index)
+        return try Value.decode(fromRow: self, atUncheckedIndex: index)
     }
     
     /// Returns the value at given column, converted to the requested type.

        atIndex index: Int)
    throws -> Value?
    {
        try Value.decodeIfPresent(fromRow: self, atUncheckedIndex: _checkedIndex(index))
    }
    
    /// Returns the value at given index, converted to the requested type.

    /// Fatal errors if index is out of bounds
    @inline(__always)
    @usableFromInline
    /* private */ func _checkIndex(_ index: Int, file: StaticString = #file, line: UInt = #line) {
        GRDBPrecondition(index >= 0 && index < count, "row index out of range", file: file, line: line)
    }
    
    /// Returns true if and only if one column contains a non-null value, or if
