Tôi đã tự hỏi nếu bạn có thể tái nâng cao một ngoại lệ bắt buộc (cụ thể) và bị nó bắt sau (chung) ngoại trừ trong cùng một lần thử ngoại trừ. Ví dụ, tôi muốn làm một cái gì đó với một IOError cụ thể, nhưng nếu nó không phải là IOError mong đợi thì ngoại lệ nên được xử lý giống như bất kỳ lỗi nào khác. Những gì tôi ban đầu đã cố gắng:Python 'ngoại trừ' mùa thu thông qua
try:
raise IOError()
except IOError as ioerr:
if ioerr.errno == errno.ENOENT:
# do something with the expected err
else:
# continue with the try-except - should be handled like any other error
raise
except Exception as ex:
# general error handling code
Tuy nhiên, điều này không làm việc: các tăng tái tăng ngoại trừ bên ngoài bối cảnh của lần thử-trừ. Điều gì sẽ là cách viết của pythonic này để có được ngoại lệ mong muốn 'hành vi' thông qua '?
(tôi biết có một đề xuất 'có điều kiện ngoại trừ' mà không được thực hiện, có thể đã giải quyết này)
Vì vậy, bạn muốn có thể chuyển từ khối 'ngoại trừ IOError' sang khối' ngoại lệ '? Theo tôi biết là không thể, chỉ có một khối 'except' (hoặc khối' else' khác) chạy cho 'try' đã cho. Bạn có thể bọc toàn bộ thứ trong một 'try' khác, loại bỏ bên trong' ngoại trừ ngoại lệ ', điều đó có nghĩa là tất cả, nhưng 'IOError' được xử lý đặc biệt kết thúc trong' try''s 'except'. – jonrsharpe
Đây là những gì tôi muốn làm, và tôi đã lo lắng rằng chỉ có duy nhất một ngoại trừ là có thể. Tôi hy vọng cho một giải pháp thanh lịch hơn mà một cái gì đó giống như lồng nhau/mã trùng lặp – OverlordAlex