45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
#!/usr/bin/env python3.9
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
JFinal TemplateException - Template Exception
|
|
"""
|
|
|
|
class TemplateException(Exception):
|
|
"""Template runtime exception"""
|
|
|
|
def __init__(self, message: str, location = None, cause: Exception = None):
|
|
"""
|
|
Initialize template exception
|
|
|
|
Args:
|
|
message: Error message
|
|
location: Error location (optional)
|
|
cause: Original exception (optional)
|
|
"""
|
|
full_message = message
|
|
if location is not None:
|
|
full_message += str(location)
|
|
|
|
super().__init__(full_message)
|
|
self._location = location
|
|
self._cause = cause
|
|
|
|
@property
|
|
def location(self):
|
|
"""Get error location"""
|
|
return self._location
|
|
|
|
@property
|
|
def cause(self) -> Exception:
|
|
"""Get original cause"""
|
|
return self._cause
|
|
|
|
def __str__(self) -> str:
|
|
result = super().__str__()
|
|
if self._cause and self._cause != self:
|
|
result += f"\nCaused by: {self._cause}"
|
|
return result
|
|
|
|
def __repr__(self) -> str:
|
|
return f"TemplateException(message={super().__repr__()}, location={self._location})"
|