2
サブモジュールとそのメソッドを呼び出すサブモジュールを呼び出すメインモジュールがある状況をここに示します。サブモジュールで例外が発生した場合、メインモジュールの実行を停止する方法
例:
メインモジュール:
import submodule1
import submodule2
var1=submodule1.test(2,0)
var2=submodule2.verify(2,"zero")
Submodule1:
import blah
def test(x,y):
try:
return x/y
except:
#some code to print the error to log file
#some code to determine if this is a critical error
submodule2:方法に
import blah
def verify(x,y):
try:
return x*y
except:
#some code to print the error to log file
#some code to determine if this is a critical error
次に、上記の場合、最初の呼び出し"submodule1.test(2 、0) "は、ログファイルに記録された例外をスローし、そのエラーが重大なものかどうかを判断しようとします。それが重大なエラーであれば、私は実行を停止し、すべてのファイル、conenctions、モジュールなどをクローズしたい(基本的にクリーンアップ)。
上記のコードで、コントロールはメインモジュールに戻り、実行は次の行に進みます。
私のメインモジュールには、メソッドまたはオブジェクトのインスタンス化の数がある場合があります。私はすべての単一のステートメントの条件をチェックしたくありません。
これをどのように達成することができますか?ありがとうございました!
重大なエラーが発生した場合は、 'sys.exit(-1)'のような利用可能な方法の1つを使用してそれを強制終了してください。 –
クリティカルであればエラーを「発生」してバブルアップさせます。最も外側の呼び出しで、(exitやリブートなどの)何かを行うための 'catch 'を持つことができます。 – scorpiodawg
sys.exit()は、開いているすべてのファイル(ログファイルや入力シートのようなもの)また、私が確立しているセレンのコネクションも閉鎖されていないかもしれませんか? –