Pythonの組み込み例外の小話
- Event:
みんなのPython勉強会#112
- Presented:
2025/02/13 nikkie
お前、誰よ
nikkie / みんなのPython勉強会 スタッフ・4代目LT王子
機械学習エンジニア・LLM・自然言語処理(We're hiring!)
ブログ 連続 810 日突破

Pythonの 組み込み例外 の小話
毎日書いてるブログ記事からご紹介
例外を出力するように実装
try:
外部との通信処理()
except Exception as ex:
print(f"エラー発生: {ex}")
どのような具体の例外が送出されるか不明なので様子を見ていた
よっしゃ、どんなエラーか知るぞ!
エラー発生:
エラーの情報が分からない😱
俺みたいになるな!というLTです
📌 {ex!r}
にしています
try:
外部との通信処理()
except Exception as ex:
print(f"エラー発生: {ex!r}")
例外におすすめ!
{ex!r}
とはなにか
変換 (Conversion)なるもの(2.4.3. f-strings)
変換
'!s'
はstr()
を、'!r'
はrepr()
を、(略) 呼び出します。変換を書かないときは
!s
返す文字列には違いがある
str()
:人間が読める表現
repr()
:Python処理系 が読める表現
引数を渡さない例外とf-strings
>>> ex = Exception()
>>> print(f"{ex}")
>>> print(f"{ex!r}")
Exception()
基底クラス BaseException
このクラスのインスタンスに
str()
が呼ばれた場合、インスタンスへの引数の表現か、 引数が無い場合には空文字列 が返されます。
(強調は引用者による)
HTTPクライアント HTTPX にて
class ReadTimeout(TimeoutException):
"""
Timed out while receiving data from the host.
"""
参考: ReadTimeout
の継承関係
* HTTPError
x RequestError
+ TransportError
- TimeoutException
· ReadTimeout
元のブログ記事
まとめ🌯 f-stringsでは {ex!r}
try ... except
で例外を捕捉し出力するような場合例外は引数がないと
f"{ex}"
すなわちstr()
は空文字列f"{ex!r}"
でrepr()
を呼び出すことで、 引数がない例外でもクラス名が表示される
One more 小話: except Exception:
Pythonで例外を捕捉するときに、except:やexcept BaseException:と書いてはいけません。except Exception:またはもっと具体な例外クラスを指定しましょう
その2までLTには盛り込めませんでした🙏
ご清聴ありがとうございました
Happy ショコラブル*イブ 🍫🔵