Skip to content

Latest commit

 

History

History
128 lines (98 loc) · 2.95 KB

permission_error_3.rst

File metadata and controls

128 lines (98 loc) · 2.95 KB
.. rst-class:: align-right

built-in method

.. index:: pair: permission_error/3; Built-in method

permission_error/3

Description

permission_error(Operation, Permission, Culprit)

Throws an permission error. Used when an operation is not allowed. For example, sending a message for a predicate that is not within the scope of the sender. 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(permission_error(Operation,Permission,Culprit), Context)).

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

Possible values for Operation include:

  • access
  • create
  • declare
  • define
  • modify
  • open
  • input
  • output
  • reposition
  • repeat

Possible values for Permission include:

  • predicate_declaration
  • protected_predicate
  • private_predicate
  • static_predicate
  • dynamic_predicate
  • predicate
  • non_terminal
  • database
  • object
  • static_object
  • static_protocol
  • static_category
  • entity_relation
  • operator
  • flag
  • engine
  • binary_stream
  • text_stream
  • source_sink
  • stream
  • past_end_of_stream

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

Modes and number of proofs

permission_error(@nonvar, @nonvar, @nonvar) - error

Errors

When called:
permission_error(Operation, Permission, Culprit)

Examples

...,
\+ writable(File),
permission_error(modify, file, File).
.. seealso::

   :ref:`methods_catch_3`,
   :ref:`methods_throw_1`,
   :ref:`methods_context_1`,
   :ref:`methods_instantiation_error_0`,
   :ref:`methods_uninstantiation_error_1`,
   :ref:`methods_type_error_2`,
   :ref:`methods_domain_error_2`,
   :ref:`methods_consistency_error_3`,
   :ref:`methods_existence_error_2`,
   :ref:`methods_representation_error_1`,
   :ref:`methods_evaluation_error_1`,
   :ref:`methods_resource_error_1`,
   :ref:`methods_syntax_error_1`,
   :ref:`methods_system_error_0`