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

回答編集履歴

2

修正

2020/04/13 11:35

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -21,9 +21,9 @@
21
21
  >>> try:
22
22
  ... float('')
23
23
  ... except ValueError:
24
- ... print('empty input')
24
+ ... print('break')
25
25
  ...
26
- empty input
26
+ break
27
27
  ```
28
28
 
29
29
  例外を使わずとも処理を簡易に表現できるときは、避けた方が賢明です。(註)
@@ -31,15 +31,15 @@
31
31
  >>> if '':
32
32
  ... pass
33
33
  ... else:
34
- ... print('empty input')
34
+ ... print('break')
35
35
  ...
36
- empty input
36
+ break
37
37
  ```
38
38
 
39
39
  ---
40
40
  **註: 例外は避けるべき?**
41
41
 
42
- 意見が分かれるかもしれませんが、例外はただの『安全なgoto』だと思っています。
42
+ 意見が分かれるかもしれませんが、例外はただの『(比較的)安全なgoto』だと思っています。
43
43
  むしろ上位に伝播されるぶん悪質かも。
44
44
 
45
45
  もちろん『一切使うべきでは無い』という主張ではありません。

1

追記

2020/04/13 11:35

投稿

LouiS0616
LouiS0616

スコア35678

answer CHANGED
@@ -14,4 +14,32 @@
14
14
 
15
15
  ---
16
16
  try-except で握り潰してしまうと、エラーメッセージから原因を知る機会を失います。
17
- **特に except: なんて広域な捉え方をしているコードは、絶対に参考にしてはいけません。**
17
+ **特に except: なんて広域な捉え方をしているコードは、絶対に参考にしてはいけません。**
18
+
19
+ できるだけ狭い範囲を、できるだけ狭く適切な例外クラスで捕捉するようにします。
20
+ ```Python
21
+ >>> try:
22
+ ... float('')
23
+ ... except ValueError:
24
+ ... print('empty input')
25
+ ...
26
+ empty input
27
+ ```
28
+
29
+ 例外を使わずとも処理を簡易に表現できるときは、避けた方が賢明です。(註)
30
+ ```Python
31
+ >>> if '':
32
+ ... pass
33
+ ... else:
34
+ ... print('empty input')
35
+ ...
36
+ empty input
37
+ ```
38
+
39
+ ---
40
+ **註: 例外は避けるべき?**
41
+
42
+ 意見が分かれるかもしれませんが、例外はただの『安全なgoto』だと思っています。
43
+ むしろ上位に伝播されるぶん悪質かも。
44
+
45
+ もちろん『一切使うべきでは無い』という主張ではありません。