Tôi có thể quay lại để thực hiện khối
funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
0 sau khi ngoại lệ xảy ra không?Ví dụ:
try:
do_smth2[]
except:
pass
try:
do_smth2[]
except:
pass
vs.
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
mkrieger1
16.1k4 Huy hiệu vàng50 Huy hiệu bạc58 Huy hiệu đồng4 gold badges50 silver badges58 bronze badges
Hỏi ngày 22 tháng 10 năm 2013 lúc 16:08Oct 22, 2013 at 16:08
5
Không, bạn không thể làm điều đó. Đó chỉ là cách Python có cú pháp của nó. Khi bạn thoát khỏi một khối cố gắng vì một ngoại lệ, không có cách nào trở lại.
Điều gì về một vòng lặp mặc dù?
funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
Tuy nhiên, lưu ý rằng nó được coi là một thực hành xấu để có một
funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
1 trần. Bạn nên bắt cho một ngoại lệ cụ thể thay thế. Tôi đã bắt được funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
2 vì điều đó tốt như tôi có thể làm mà không biết những ngoại lệ nào mà các phương pháp có thể ném.Đã trả lời ngày 22 tháng 10 năm 2013 lúc 16:12Oct 22, 2013 at 16:12
2
Mặc dù các câu trả lời khác và câu trả lời được chấp nhận là chính xác và nên được tuân theo mã thực, chỉ để hoàn thiện và hài hước, bạn có thể thử mô -đun
funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
3 [//github.com/ajalt/fuckitpy].Mã của bạn có thể được thay đổi thành phần sau:
@fuckitpy
def myfunc[]:
do_smth2[]
do_smth2[]
Sau đó, gọi
funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
4 sẽ gọi funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
5 ngay cả khi có ngoại lệ trong funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
6Lưu ý: Vui lòng không thử nó trong bất kỳ mã thực nào, đó là sự báng bổnot try it in any real code, it is blasphemy
Đã trả lời ngày 12 tháng 8 năm 2014 lúc 19:08Aug 12, 2014 at 19:08
pankajpankajpankaj
1.41014 Huy hiệu bạc14 Huy hiệu đồng14 silver badges14 bronze badges
2
Bạn có thể đạt được những gì bạn muốn, nhưng với một cú pháp khác. Bạn có thể sử dụng một khối "cuối cùng" sau khi thử/ngoại trừ. Làm theo cách này, Python sẽ thực thi khối mã bất kể ngoại lệ nào đã bị ném, hoặc không.
Như thế này:
try:
do_smth2[]
except:
pass
finally:
do_smth2[]
Nhưng, nếu bạn muốn thực thi do_smth2 [] chỉ khi ngoại lệ không bị ném, hãy sử dụng khối "khác":
try:
do_smth2[]
except:
pass
else:
do_smth2[]
Bạn cũng có thể trộn chúng, trong một thử/ngoại trừ/khác/cuối cùng là mệnh đề. Chúc vui vẻ!
Đã trả lời ngày 22 tháng 10 năm 2013 lúc 16:39Oct 22, 2013 at 16:39
Lucas Ribeirolucas RibeiroLucas Ribeiro
5.9042 Huy hiệu vàng23 Huy hiệu bạc28 Huy hiệu đồng2 gold badges23 silver badges28 bronze badges
'Tiếp tục' được phép trong một 'ngoại trừ' hoặc 'cuối cùng' chỉ khi khối thử nằm trong một vòng lặp. 'Tiếp tục' sẽ khiến lần lặp tiếp theo của vòng lặp bắt đầu.
Vì vậy, bạn có thể thử đặt hai hoặc nhiều chức năng của mình vào danh sách và sử dụng vòng lặp để gọi chức năng của bạn.
Như thế này:
funcs = [f,g]
for func in funcs:
try: func[]
except: continue
Nhưng, nếu bạn muốn thực thi do_smth2 [] chỉ khi ngoại lệ không bị ném, hãy sử dụng khối "khác":
Bạn cũng có thể trộn chúng, trong một thử/ngoại trừ/khác/cuối cùng là mệnh đề. Chúc vui vẻ!
Đã trả lời ngày 22 tháng 10 năm 2013 lúc 16:392 gold badges17 silver badges26 bronze badges
Lucas Ribeirolucas RibeiroJun 13, 2018 at 2:48
5.9042 Huy hiệu vàng23 Huy hiệu bạc28 Huy hiệu đồngLIU ZHIWEN
'Tiếp tục' được phép trong một 'ngoại trừ' hoặc 'cuối cùng' chỉ khi khối thử nằm trong một vòng lặp. 'Tiếp tục' sẽ khiến lần lặp tiếp theo của vòng lặp bắt đầu.2 silver badges5 bronze badges
Vì vậy, bạn có thể thử đặt hai hoặc nhiều chức năng của mình vào danh sách và sử dụng vòng lặp để gọi chức năng của bạn.
for m in [do_smth2, do_smth2]:
try:
m[]
except:
pass
Đã trả lời ngày 22 tháng 10 năm 2013 lúc 16:12Oct 22, 2013 at 16:12
Mặc dù các câu trả lời khác và câu trả lời được chấp nhận là chính xác và nên được tuân theo mã thực, chỉ để hoàn thiện và hài hước, bạn có thể thử mô -đun
funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
3 [//github.com/ajalt/fuckitpy].David NealeMã của bạn có thể được thay đổi thành phần sau:6 gold badges57 silver badges84 bronze badges
Sau đó, gọi
funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
4 sẽ gọi funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
5 ngay cả khi có ngoại lệ trong funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
6def consume_exceptions[gen]:
action = next[gen]
while True:
try:
result = action[]
except Exception:
# if the action fails, send a sentinel
result = None
try:
action = gen.send[result]
except StopIteration:
# if the generator is all used up, result is the return value.
return result
Lưu ý: Vui lòng không thử nó trong bất kỳ mã thực nào, đó là sự báng bổ
def do_smth2[]:
1 / 0
def do_smth2[]:
print "YAY"
def do_many_things[]:
a = yield do_smth2
b = yield do_smth2
yield "Done"
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
0Đã trả lời ngày 12 tháng 8 năm 2014 lúc 19:08
pankajpankajOct 22, 2013 at 18:06
1
1.41014 Huy hiệu bạc14 Huy hiệu đồng
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
1
Bạn có thể đạt được những gì bạn muốn, nhưng với một cú pháp khác. Bạn có thể sử dụng một khối "cuối cùng" sau khi thử/ngoại trừ. Làm theo cách này, Python sẽ thực thi khối mã bất kể ngoại lệ nào đã bị ném, hoặc không.Oct 22, 2013 at 16:14
Như thế này:rlms
Nhưng, nếu bạn muốn thực thi do_smth2 [] chỉ khi ngoại lệ không bị ném, hãy sử dụng khối "khác":8 gold badges43 silver badges59 bronze badges
Bạn cũng có thể trộn chúng, trong một thử/ngoại trừ/khác/cuối cùng là mệnh đề. Chúc vui vẻ!
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
2Đã trả lời ngày 22 tháng 10 năm 2013 lúc 16:39
Lucas Ribeirolucas RibeiroOct 22, 2013 at 16:18
5.9042 Huy hiệu vàng23 Huy hiệu bạc28 Huy hiệu đồngDan
'Tiếp tục' được phép trong một 'ngoại trừ' hoặc 'cuối cùng' chỉ khi khối thử nằm trong một vòng lặp. 'Tiếp tục' sẽ khiến lần lặp tiếp theo của vòng lặp bắt đầu.16 silver badges26 bronze badges
Vì vậy, bạn có thể thử đặt hai hoặc nhiều chức năng của mình vào danh sách và sử dụng vòng lặp để gọi chức năng của bạn. to avoid try-except repetition:
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
3Để biết thông tin đầy đủ, bạn có thể truy cập liên kết này
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
4Laintalay
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
51.1542 Huy hiệu vàng17 Huy hiệu bạc26 Huy hiệu đồng
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
6Đã trả lời ngày 13 tháng 6 năm 2018 lúc 2:48
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
7
Liu Zhiwenliu ZhiwenFeb 8, 2018 at 4:15
932 huy hiệu bạc5 huy hiệu đồngDeWil
Bạn có thể lặp lại thông qua các phương pháp của bạn ...3 silver badges10 bronze badges
1
David Nealedavid Neale
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
816.1k6 Huy hiệu vàng57 Huy hiệu bạc84 Huy hiệu đồng
Một cách bạn có thể xử lý điều này là với một máy phát điện. Thay vì gọi hàm, mang lại nó; Sau đó, bất cứ điều gì đang tiêu thụ trình tạo đều có thể gửi kết quả gọi nó trở lại máy phát điện hoặc một sentinel nếu trình tạo không thành công: tấm bạt lò xo hoàn thành những điều trên có thể trông như vậy:
try:
do_smth2[]
do_smth2[]
except:
??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
9Một trình tạo sẽ tương thích với điều này sẽ trông như thế này:
Lưu ý rằng
funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
7 không gọi funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
8, nó chỉ mang lại cho họ và funcs = do_smth2, do_smth2
for func in funcs:
try:
func[]
except Exception:
pass # or you could use 'continue'
9 gọi họ thay mặtMar 3 at 22:19