     - returns: An optional *Value*.
     */
     public func value<Value: protocol<DatabaseValueConvertible, SQLiteStatementConvertible>>(named columnName: String) -> Value? {
-        let index = impl.indexForColumn(named: columnName)!
-        return value(atIndex: index)
+        if let index = impl.indexForColumn(named: columnName) {
+            return value(atIndex: index)
+        } else {
+            fatalError("No such column: \(String(reflecting: columnName))")
+        }
     }
     
     /**

    - returns: An optional *Value*.
    */
    public func value<Value: protocol<DatabaseValueConvertible, SQLiteStatementConvertible>>(named columnName: String) -> Value {
        let index = impl.indexForColumn(named: columnName)!
        return value(atIndex: index)
    }
    
    

    - returns: An optional *Value*.
    */
    public func value<Value: DatabaseValueConvertible>(named columnName: String) -> Value? {
        if let index = impl.indexForColumn(named: columnName) {
            return value(atIndex: index)
        } else {
            fatalError("No such column: \(String(reflecting: columnName))")
        }
    }
    
    /**
