例外の発生と再発生
raise でエラーを通知し、再発生させて上位へ伝播します。
「例外の発生と再発生」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。
はじめに
組み込み例外の raise
def divide(a, b):
if b == 0:
raise ValueError('Denominator cannot be zero')
return a / b
try:
divide(5, 0)
except ValueError as e:
print(e)同じ例外の再送出
def process(data):
try:
return int(data)
except ValueError:
print('logging error')
raise # re-raises original
try:
process('abc')
except ValueError:
print('caller caught it')from による例外の連鎖
try:
int('abc')
except ValueError as original:
raise RuntimeError('processing failed') from original例外の連鎖を抑制する
try:
int('abc')
except ValueError:
raise RuntimeError('clean error') from Noneassert 文
def sqrt(x):
assert x >= 0, f'Input must be non-negative, got {x}'
return x ** 0.5
try:
sqrt(-1)
except AssertionError as e:
print(e)条件付きの raise
def process(items):
if not items:
raise ValueError('items must not be empty')
return items[0]
print(process([1, 2, 3]))再送出と新しい例外の違い
def outer():
try:
inner()
except ValueError as e:
raise RuntimeError('outer failed') from e
def inner():
raise ValueError('inner failed')
try:
outer()
except RuntimeError as e:
print(e, e.__cause__)finally 内の例外
try:
try:
raise ValueError('original')
finally:
print('finally ran')
except ValueError as e:
print('caught:', e)warnings.warn と raise の違い
import warnings
def old_func():
warnings.warn('Deprecated', DeprecationWarning)
return 42
print(old_func())raise from None パターン
class DBError(Exception): pass
def query(q):
try:
raise ConnectionError('refused')
except ConnectionError:
raise DBError('query failed') from None
try:
query('SELECT 1')
except DBError as e:
print(e)クイックチェック
まとめ
次へ進みましょう
よくある質問
「例外の発生と再発生」レッスンは無料ですか?
はい。「例外の発生と再発生」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。
「例外の発生と再発生」で何を学びますか?
raise でエラーを通知し、再発生させて上位へ伝播します。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「例外の発生と再発生」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。