Is there any way to manually make CH throw a specific error?

Something like this:
```sql
SELECT throwError(999);

Received exception from server (version 22.2.2):
Code: 999. DB::Exception: KEEPER_EXCEPTION ...
```

PS:
*Although there is a similar function (`throwIf`), it only returns code=395 (FUNCTION_THROW_IF_VALUE_IS_NON_ZERO).*

**Use case**

We're looking something like this so we can simulate errors and take relevant actions agains some errors.

ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t input_rows_count) const override
    {
        if (input_rows_count == 0)
            return result_type->createColumn();
        std::optional<String> custom_message;
        if (arguments.size() == 2)
        {
            const auto * message_column = checkAndGetColumnConst<ColumnString>(arguments[1].column.get());
            if (!message_column)
                throw Exception(ErrorCodes::ILLEGAL_COLUMN,
                    "Second argument for function {} must be constant String",
                    getName());
            custom_message = message_column->getValue<String>();
        }
        auto first_argument_column = arguments.front().column;
        const auto * in = first_argument_column.get();
        ColumnPtr res;
        if (!((res = execute<UInt8>(in, custom_message))
            || (res = execute<UInt16>(in, custom_message))
            || (res = execute<UInt32>(in, custom_message))
            || (res = execute<UInt64>(in, custom_message))
            || (res = execute<Int8>(in, custom_message))
            || (res = execute<Int16>(in, custom_message))
            || (res = execute<Int32>(in, custom_message))
            || (res = execute<Int64>(in, custom_message))
            || (res = execute<Float32>(in, custom_message))
            || (res = execute<Float64>(in, custom_message))))
        {
            throw Exception{"Illegal column " + in->getName() + " of first argument of function " + getName(), ErrorCodes::ILLEGAL_COLUMN};
        }