\

Pythonでは、例外が発生した場合にそれをキャッチして処理を続行するためには、通常try/exceptブロックを使用します。しかし、ループの中でtry/exceptブロックを使わずに例外を発生させてもメインのコード/ループが続行する方法があるかどうか、という質問がありました。

結論から言うと、try/catchを使わないとPythonでは不可能です。関数内で例外が発生し、それが処理されない場合、その例外は呼び出し元の関数に伝播します。そして、その例外がメインプログラムに到達し、そこでも例外処理がない場合、プログラムは例外トレースバックと共に停止します。

しかし、例外を発生させつつもコードの実行を続けるための一つの方法として、特定の関数を作成する方法があります。以下にその例を示します。

from inspect import currentframe,getframeinfo

def Raise(ex):
    cf = currentframe() #Get the line
    line=cf.f_back.f_lineno
    print('Traceback:\\n'+ex+'\\nin line '+str(line))
    wait=input('Press Enter to continue excecution.')

readme = input("Write here something:")
if readme == "":
    Raise("That was empty!")

このコードでは、Raise関数を定義しています。この関数は例外を引数として受け取り、その例外が発生した行番号とともにトレースバックを表示します。そして、ユーザーがEnterキーを押すまで実行を一時停止します。

以上のように、Pythonでは例外を発生させつつもコードの実行を続けるためには、適切な例外処理が必要となります。この記事が、Pythonの例外処理についての理解を深める一助となれば幸いです。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です