回答編集履歴

1

例外処理 追加

2017/07/10 06:33

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -105,3 +105,127 @@
105
105
 
106
106
 
107
107
  そうすれば 配列の型に関係なくできると思います。
108
+
109
+
110
+
111
+ ----------
112
+
113
+
114
+
115
+ 他の方から「上記の方法はレガシーコードだ」と指摘を受けました。
116
+
117
+
118
+
119
+ その方からは「例外処理」を提示されました。
120
+
121
+ 確かに例外処理もあります。
122
+
123
+
124
+
125
+ なので、
126
+
127
+
128
+
129
+ メソッドA の内部で処理するときに 指定の処理が失敗したら例外を投げる。
130
+
131
+ メソッドB でも同様。
132
+
133
+ メソッドC も...
134
+
135
+
136
+
137
+ という風にしておきます。
138
+
139
+
140
+
141
+ Pythonはよくわからないので調べてみると、
142
+
143
+ throw ではなく raise らしいですね。
144
+
145
+
146
+
147
+ なので、
148
+
149
+
150
+
151
+ ```Python
152
+
153
+ def methodA():
154
+
155
+ # なんらかの処理
156
+
157
+ # ここで処理失敗したとする
158
+
159
+ raise Exception( "methodA失敗" )
160
+
161
+
162
+
163
+ def methodB():
164
+
165
+ # なんらかの処理
166
+
167
+ # ここで処理失敗したとする
168
+
169
+ raise Exception( "methodB失敗" )
170
+
171
+
172
+
173
+ def methodC():
174
+
175
+ # なんらかの処理
176
+
177
+ # ここで処理失敗したとする
178
+
179
+ raise Exception( "methodC失敗" )
180
+
181
+
182
+
183
+ ```
184
+
185
+
186
+
187
+ としておけば、
188
+
189
+
190
+
191
+ ```Python
192
+
193
+ def methodX():
194
+
195
+ try:
196
+
197
+ methodA()
198
+
199
+ methodB()
200
+
201
+ methodC()
202
+
203
+ except Exception, e:
204
+
205
+ print e.value
206
+
207
+ ```
208
+
209
+
210
+
211
+ みたいにできます。
212
+
213
+
214
+
215
+ で、もしmethodAで失敗すれば 例外が投げられるので methodB以降は処理しない状態です。
216
+
217
+
218
+
219
+ なので、用件にあっているかと。
220
+
221
+
222
+
223
+ [例外を投げる](http://d.hatena.ne.jp/veryberry_cafe/20061005/1160599052)
224
+
225
+
226
+
227
+
228
+
229
+
230
+
231
+