質問するログイン新規登録

回答編集履歴

3

d

2020/12/15 07:59

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -22,7 +22,7 @@
22
22
  > こちらは、例外が発生した際に、except文をいくつか書いていた場合に、上のexcept文の処理が実行されるといった解釈で良かったでしょうか...?
23
23
 
24
24
  例えば、main() から func1() を呼び出し、func1() から func2() を呼び出しているとして、func2() 内で例外が発生したとします。
25
- その場合、例外は func2() -> func1() -> main() と except で捕捉されるまで呼び出しもとに再送出されていくので、一番上位側に try~except を入れておけばよいという意味です。
25
+ その場合、例外は func2() -> func1() -> main() と except で捕捉されるまで呼び出しもとに再送出されていくので、一番上位側 (この場合 main()) に try~except を入れておけばよいという意味です。
26
26
 
27
27
  ```
28
28
  def func2():

2

d

2020/12/15 07:59

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -15,4 +15,29 @@
15
15
  except Exception as e:
16
16
  msg = traceback.format_exc()
17
17
  logging.error(msg)
18
+ ```
19
+
20
+ ## 追記
21
+
22
+ > こちらは、例外が発生した際に、except文をいくつか書いていた場合に、上のexcept文の処理が実行されるといった解釈で良かったでしょうか...?
23
+
24
+ 例えば、main() から func1() を呼び出し、func1() から func2() を呼び出しているとして、func2() 内で例外が発生したとします。
25
+ その場合、例外は func2() -> func1() -> main() と except で捕捉されるまで呼び出しもとに再送出されていくので、一番上位側に try~except を入れておけばよいという意味です。
26
+
27
+ ```
28
+ def func2():
29
+ raise Exception("Error")
30
+
31
+
32
+ def func1():
33
+ func2()
34
+
35
+
36
+ def main():
37
+ try:
38
+ func1()
39
+ except Exception as e:
40
+ print(e)
41
+
42
+ main()
18
43
  ```

1

d

2020/12/15 07:57

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > 実際に変数の参照エラーなどが発生した際に、その内容を出力させる方法が分からない状況です。
2
2
 
3
- エラーが発生した場合、例外が送出されるので、ログを出力させたい場所で `try - except` 文で補足し、エラー内容を出力すればいいとおもいます。
3
+ エラーが発生した場合、例外が送出されるので、ログを出力させたい場所で `try - except` 文で例外を捕捉し、エラー内容を出力すればいいとおもいます。
4
4
  スタックトレースは [traceback](https://docs.python.org/ja/3/library/traceback.html) モジュールで取得できるので、必要な情報を適宜整形してログに出力すればいいとおもいます。
5
5
 
6
6
  ```