回答編集履歴

2

修正

2020/04/13 11:35

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -44,11 +44,11 @@
44
44
 
45
45
  ... except ValueError:
46
46
 
47
- ... print('empty input')
47
+ ... print('break')
48
48
 
49
49
  ...
50
50
 
51
- empty input
51
+ break
52
52
 
53
53
  ```
54
54
 
@@ -64,11 +64,11 @@
64
64
 
65
65
  ... else:
66
66
 
67
- ... print('empty input')
67
+ ... print('break')
68
68
 
69
69
  ...
70
70
 
71
- empty input
71
+ break
72
72
 
73
73
  ```
74
74
 
@@ -80,7 +80,7 @@
80
80
 
81
81
 
82
82
 
83
- 意見が分かれるかもしれませんが、例外はただの『安全なgoto』だと思っています。
83
+ 意見が分かれるかもしれませんが、例外はただの『(比較的)安全なgoto』だと思っています。
84
84
 
85
85
  むしろ上位に伝播されるぶん悪質かも。
86
86
 

1

追記

2020/04/13 11:35

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -31,3 +31,59 @@
31
31
  try-except で握り潰してしまうと、エラーメッセージから原因を知る機会を失います。
32
32
 
33
33
  **特に except: なんて広域な捉え方をしているコードは、絶対に参考にしてはいけません。**
34
+
35
+
36
+
37
+ できるだけ狭い範囲を、できるだけ狭く適切な例外クラスで捕捉するようにします。
38
+
39
+ ```Python
40
+
41
+ >>> try:
42
+
43
+ ... float('')
44
+
45
+ ... except ValueError:
46
+
47
+ ... print('empty input')
48
+
49
+ ...
50
+
51
+ empty input
52
+
53
+ ```
54
+
55
+
56
+
57
+ 例外を使わずとも処理を簡易に表現できるときは、避けた方が賢明です。(註)
58
+
59
+ ```Python
60
+
61
+ >>> if '':
62
+
63
+ ... pass
64
+
65
+ ... else:
66
+
67
+ ... print('empty input')
68
+
69
+ ...
70
+
71
+ empty input
72
+
73
+ ```
74
+
75
+
76
+
77
+ ---
78
+
79
+ **註: 例外は避けるべき?**
80
+
81
+
82
+
83
+ 意見が分かれるかもしれませんが、例外はただの『安全なgoto』だと思っています。
84
+
85
+ むしろ上位に伝播されるぶん悪質かも。
86
+
87
+
88
+
89
+ もちろん『一切使うべきでは無い』という主張ではありません。