built-in method

# `existence_error/2`

## Description

    existence_error(Thing, Culprit)

Throws an existence error. Used when the subject of an operation does not exist. This built-in method is declared private and thus cannot be used as a message to an object. Calling this predicate is equivalent to the following sequence of goals:

    ...,
    context(Context),
    throw(error(existence_error(Thing,Culprit), Context)).

This allows the user to generate errors in the same format used by the runtime.

Possible values for `Thing` include:

- `predicate`

- `non_terminal`

- `predicate_declaration`

- `procedure`

- `source_sink`

- `stream`

- `object`

- `protocol`

- `category`

- `module`

- `ancestor`

- `library`

- `file`

- `directive`

- `engine`

- `thread`

- `goal_thread`

The value of `Culprit` is the argument or one of its sub-terms that caused the error.

## Modes and number of proofs

    existence_error(@nonvar, @nonvar) - error

## Errors

When called:
`existence_error(Thing, Culprit)`

## Examples

    ...,
    \+ current_object(payroll),
    existence_error(object, payroll).

See also

catch/3, throw/1, context/1, instantiation_error/0, uninstantiation_error/1, type_error/2, domain_error/2, consistency_error/3, evaluation_error/1, permission_error/3, representation_error/1, resource_error/1, syntax_error/1, system_error/0