実現したいこと
class内のmethodでエラーが発生したときに、class内の指定したmethodを必ず実行するようにする簡潔な方法はありますでしょうか。
詳細
基本的にはtry文がよくあるやり方だと思うのですが、私が思いついた書き方(下記コードを参照)では、非常に冗長なコードになってしまいます。
一般的な書き方
python
1################# 書き方1 ############# 2## 問題点 3## メソッドを使うたびにtry文が必要 4class Hoge_v1: 5 def 問題があるメソッド(self): 6 print("問題があるメソッドが実行される") 7 ここでエラー発生 8 9 def エラーが起きたときに実行させたいメソッド(self): 10 print("エラー発生時の処理") 11 12 13例1 = Hoge_v1() 14 15try: 16 例1.問題があるメソッド() 17except: 18 例1.エラーが起きたときに実行させたいメソッド() 19 20"""出力例 21問題があるメソッドが実行される 22エラー発生時の処理 23""" 24 25 26################# 書き方2 ############# 27## 問題点 28## クラス内のメソッドが複数ある場合に、全てにtry文が必要 29class Hoge_v2: 30 def 問題があるメソッド(self): 31 try: 32 print("問題があるメソッドが実行される") 33 ここでエラー発生 34 except: 35 self.エラーが起きたときに実行させたいメソッド(self) 36 37 def 問題があるメソッド2(self): 38 try: 39 print("問題があるメソッドが実行される") 40 ここでエラー発生 41 except: 42 self.エラーが起きたときに実行させたいメソッド(self) 43 44 def エラーが起きたときに実行させたいメソッド(self): 45 print("エラー発生時の処理") 46 47 48例2 = Hoge_v2() 49 50try: 51 例2.問題があるメソッド() 52except: 53 例2.エラーが起きたときに実行させたいメソッド() 54 55"""出力例 56問題があるメソッドが実行される 57エラー発生時の処理 58""" 59
その他
クロージャーやデコレーターを用いたらうまく書けそうな気もするのですが思いつきませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/22 15:13