Hướng dẫn can i use continue in try except python? - tôi có thể sử dụng tiếp tục trong thử ngoại trừ python không?

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'
6

Lư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 Neale

Mã 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'
6

def 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
4

Laintalay

try:
    do_smth2[]
    do_smth2[]
except:
    ??? # magic word to proceed to do_smth2[] if there was exception in do_smth2
5

1.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
8

16.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
9

Mộ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

Bạn có thể sử dụng tiếp tục trong ngoại trừ không?

Để tránh điều này, hãy sử dụng câu lệnh tiếp tục trong khối ngoại trừ.Điều này bỏ qua phần còn lại của vòng lặp khi một ngoại lệ xảy ra.use the continue statement in the except block. This skips the rest of the loop when an exception occurs.

Có phải thực hành tốt để sử dụng thử ngoại trừ trong Python?

Lý do sử dụng thử/ngoại trừ là khi bạn có một khối mã để thực thi đôi khi sẽ chạy chính xác và đôi khi không, tùy thuộc vào các điều kiện bạn không thể thấy trước tại thời điểm bạn viết mã.when you have a code block to execute that will sometimes run correctly and sometimes not, depending on conditions you can't foresee at the time you're writing the code.

Chúng ta có thể sử dụng khác với thử ngoại trừ trong Python không?

Khối thử cho phép bạn kiểm tra một khối mã cho lỗi.Khối ngoại trừ cho phép bạn xử lý lỗi.Khối khác cho phép bạn thực thi mã khi không có lỗi.Khối cuối cùng cho phép bạn thực thi mã, bất kể kết quả của các khối cố gắng và ngoại trừ.The else block lets you execute code when there is no error. The finally block lets you execute code, regardless of the result of the try- and except blocks.

Bạn có thể có 2 lần thử ngoại trừ Python không?

Bạn không thể có điều đó.Một khối thử không có ở đó để đàn áp các ngoại lệ trên tất cả các mã được thực thi.Nó sẽ cho phép bạn bắt được ngoại lệ khi nó xảy ra, nhưng phần còn lại của khối không bao giờ được thực thi.. A try block is not there to suppress exceptions across all code executed. It'll let you catch the exception when it happens, but the rest of the block is never executed.

Bài Viết Liên Quan

Chủ Đề