環境
- Windows 10
- Python 3.10.1
- VSCode
使用するソースコード
以下の公開リポジトリに置いています
GitHub - masayan1126/tao-py-py: 作業自動化用 Python ライブラリ
作業自動化用 Python ライブラリ. Contribute to masayan1126/tao-py-py development by creating an account on GitHub.
結論
結論からにはなりますが、以下のルールで作成する必要があります。
- Exceptionクラスが親クラスになるように作成する
なお、Exceptionクラスを直接継承する必要はないが、Exceptionクラスのサブクラスを継承するようにすること - 例外クラスの名称は~Errorとなるように作成する
- 必要に応じて、コンストラクタや__str__を実装する
※__str__ は例外オブジェクトをプリントしたときに表示される文字列を指定するためのメソッド - 例外を送出するクラスでは、raiseを使用することで例外をスローすることができる
上記を踏まえ、以下のような空文字を許容しない例外クラスを作成するとする。
※詳細は以下を参照
8. エラーと例外 — Python 3.6.15 ドキュメント
class EmptyStringError(Exception):
def __init__(self, msg):
self._msg = msg
def __str__(self):
return self._msg
使用例
Xstrクラスはインスタンス生成時に文字列を引数にとり、空文字の場合は、上記で作成したEmptyStringErrorが送出されるように実装しています
packages\test.py
- 例外をcatchする箇所で、EmptyStringError as eとすることで、eの中からエラーメッセージやクラス名等を取り出すことが可能
from shared.Domain.xstr import XStr
from shared.Exception.empty_string_error import EmptyStringError
from shared.x_logger import XLogger
try:
xstr = XStr("")
except EmptyStringError as e:
print(e._msg)
XLogger.exceptionToSlack(e._msg)
shared\Domain\xstr.py
from shared.base_class import BaseClass
from shared.Exception.empty_string_error import EmptyStringError
class XStr(BaseClass):
def __init__(self, string: str):
if not isinstance(string, str):
raise TypeError
# 空文字の場合
if len(string) == 0:
raise EmptyStringError("空文字は指定できません")
self.string = string
送出されたエラーはslackに通知するようにしているので、下記のようなエラーメッセージが通知されます

Pythonでslack_log_handlerを使用してログをslackに通知する
本記事では、Pythonでslack_log_handlerを使用してログをslackに通知する際のプログラム例や設定方法について紹介しています