Skip to content

Result Access Error

result_access_error

Error raised when accessing the wrong variant of a Result type.

Defines ResultAccessError, raised when code accesses .value on an
Err result or .error on an Ok result. Enforces correct Result
variant destructuring — callers must check .is_ok() or .is_err()
before accessing the payload.

Extends RuntimeErrorMixin (catchable as RuntimeError) and
Error[MetadataValueType].

ResultAccessError

Bases: RuntimeErrorMixin, Error[MetadataValueType]

Exception raised when trying to access value or err from an inappropriate Result variant.

Example
error = ResultAccessError(ErrorMessage("Cannot access value from an Err Result."))
raise error
Source code in src/forging_blocks/foundation/errors/result_access_error.py
class ResultAccessError(RuntimeErrorMixin, Error[MetadataValueType]):
    """Exception raised when trying to access value or err from an inappropriate Result variant.

    Example:
        ```python
        error = ResultAccessError(ErrorMessage("Cannot access value from an Err Result."))
        raise error
        ```

    """

    def __init__(self, message: ErrorMessage | None = None) -> None:
        """Initialise with an optional custom error message.

        Args:
            message: Optional `ErrorMessage` describing the invalid
                access. Defaults to a generic message when not provided.

        """
        message = message or ErrorMessage("Invalid access on Result type.")
        super().__init__(message)

    @classmethod
    def cannot_access_value(cls) -> "ResultAccessError":
        """Create an error for accessing value from an Err Result."""
        return cls(ErrorMessage("Cannot access value from an Err Result."))

    @classmethod
    def cannot_access_error(cls) -> "ResultAccessError":
        """Create an error for accessing error from an Ok Result."""
        return cls(ErrorMessage("Cannot access error from an Ok Result."))

__init__(message: ErrorMessage | None = None) -> None

Initialise with an optional custom error message.

Parameters:

Name Type Description Default
message ErrorMessage | None

Optional ErrorMessage describing the invalid
access. Defaults to a generic message when not provided.

None
Source code in src/forging_blocks/foundation/errors/result_access_error.py
def __init__(self, message: ErrorMessage | None = None) -> None:
    """Initialise with an optional custom error message.

    Args:
        message: Optional `ErrorMessage` describing the invalid
            access. Defaults to a generic message when not provided.

    """
    message = message or ErrorMessage("Invalid access on Result type.")
    super().__init__(message)

cannot_access_value() -> ResultAccessError classmethod

Create an error for accessing value from an Err Result.

Source code in src/forging_blocks/foundation/errors/result_access_error.py
@classmethod
def cannot_access_value(cls) -> "ResultAccessError":
    """Create an error for accessing value from an Err Result."""
    return cls(ErrorMessage("Cannot access value from an Err Result."))

cannot_access_error() -> ResultAccessError classmethod

Create an error for accessing error from an Ok Result.

Source code in src/forging_blocks/foundation/errors/result_access_error.py
@classmethod
def cannot_access_error(cls) -> "ResultAccessError":
    """Create an error for accessing error from an Ok Result."""
    return cls(ErrorMessage("Cannot access error from an Ok Result."))