built-in method

domain_error/2

Description

domain_error(Domain, Culprit)

Throws a domain error. Used when an argument is of the correct type but outside the valid domain. For example, trying to use an atom as an operator specifier that is not a valid specifier. 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(domain_error(Domain,Culprit), Context)).

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

Possible values for Domain include:

  • character_code_list

  • close_option

  • flag_option

  • flag_value

  • compiler_flag

  • flag

  • prolog_flag

  • io_mode

  • non_empty_list

  • not_less_than_zero

  • operator_priority

  • operator_specifier

  • read_option

  • source_sink

  • stream

  • stream_option

  • stream_or_alias

  • stream_position

  • stream_property

  • write_option

  • character_code_list

  • text_encoding

  • directive

  • object_directive

  • protocol_directive

  • category_directive

  • object_relation

  • protocol_relation

  • category_relation

  • object_property

  • protocol_property

  • category_property

  • predicate_property

  • meta_argument_specifier

  • meta_directive_template

  • closure

  • allocation

  • redefinition

  • message_sending_goal

  • class

  • prototype

  • scope

  • boolean

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

Modes and number of proofs

domain_error(+atom, @nonvar) - error

Errors

When called:
domain_error(Domain, Culprit)

Examples

...,
atom(Color),
\+ color(Color),
domain_error(color, Color).