mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 10:11:52 +00:00
Add extensions for class-based error handler
This commit is contained in:
parent
0fbd2819f9
commit
01c6303d67
3 changed files with 43 additions and 3 deletions
|
|
@ -7,3 +7,11 @@ class ErrorHandler(BaseHandler[Exception], ABC):
|
|||
"""
|
||||
Base class for errors handlers
|
||||
"""
|
||||
|
||||
@property
|
||||
def exception_name(self) -> str:
|
||||
return self.event.__class__.__name__
|
||||
|
||||
@property
|
||||
def exception_message(self) -> str:
|
||||
return str(self.event)
|
||||
|
|
|
|||
|
|
@ -13,14 +13,17 @@ class MyHandler(ErrorHandler):
|
|||
async def handle(self) -> Any:
|
||||
log.exception(
|
||||
"Cause unexpected exception %s: %s",
|
||||
self.event.__class__.__name__,
|
||||
self.event
|
||||
self.exception_name,
|
||||
self.exception_message
|
||||
)
|
||||
```
|
||||
|
||||
## Extension
|
||||
|
||||
This base handler is subclass of [BaseHandler](basics.md#basehandler)
|
||||
This base handler is subclass of [BaseHandler](basics.md#basehandler) with some extensions:
|
||||
|
||||
- `#!python3 self.exception_name` is alias for `#!python3 self.event.__class__.__name__`
|
||||
- `#!python3 self.exception_message` is alias for `#!python3 str(self.event)`
|
||||
|
||||
## Related pages
|
||||
|
||||
|
|
|
|||
29
tests/test_dispatcher/test_handler/test_error.py
Normal file
29
tests/test_dispatcher/test_handler/test_error.py
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
from typing import Any
|
||||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.types import (
|
||||
CallbackQuery,
|
||||
InlineQuery,
|
||||
Poll,
|
||||
PollOption,
|
||||
ShippingAddress,
|
||||
ShippingQuery,
|
||||
User,
|
||||
)
|
||||
from aiogram.dispatcher.handler import ErrorHandler, PollHandler
|
||||
|
||||
|
||||
class TestErrorHandler:
|
||||
@pytest.mark.asyncio
|
||||
async def test_extensions(self):
|
||||
event = KeyError("kaboom")
|
||||
|
||||
class MyHandler(ErrorHandler):
|
||||
async def handle(self) -> Any:
|
||||
assert self.event == event
|
||||
assert self.exception_name == event.__class__.__name__
|
||||
assert self.exception_message == str(event)
|
||||
return True
|
||||
|
||||
assert await MyHandler(event)
|
||||
Loading…
Add table
Add a link
Reference in a new issue