34 lines
847 B
Python
34 lines
847 B
Python
"""
|
|
SimPy specific exeptions.
|
|
|
|
"""
|
|
from typing import Any, Optional
|
|
|
|
|
|
class SimPyException(Exception):
|
|
"""Base class for all SimPy specific exceptions."""
|
|
|
|
|
|
class Interrupt(SimPyException):
|
|
"""Exception thrown into a process if it is interrupted (see
|
|
:func:`~simpy.events.Process.interrupt()`).
|
|
|
|
:attr:`cause` provides the reason for the interrupt, if any.
|
|
|
|
If a process is interrupted concurrently, all interrupts will be thrown
|
|
into the process in the same order as they occurred.
|
|
|
|
|
|
"""
|
|
|
|
def __init__(self, cause: Optional[Any]):
|
|
super().__init__(cause)
|
|
|
|
def __str__(self) -> str:
|
|
return f'{self.__class__.__name__}({self.cause!r})'
|
|
|
|
@property
|
|
def cause(self) -> Optional[Any]:
|
|
"""The cause of the interrupt or ``None`` if no cause was provided."""
|
|
return self.args[0]
|