Tôi có một thử ... ngoại trừ khối trong mã của tôi và Khi một ngoại lệ là ném. Tôi thực sự chỉ muốn tiếp tục với mã vì trong trường hợp đó, mọi thứ vẫn có thể chạy tốt. Vấn đề là nếu bạn rời khỏi ngoại trừ: khối trống hoặc không có gì, nó sẽ cho bạn một lỗi cú pháp. Tôi không thể sử dụng tiếp tục vì nó không trong vòng lặp. Có một từ khóa tôi có thể sử dụng mà nói với mã để chỉ tiếp tục đi?Python: Làm thế nào để bỏ qua một ngoại lệ và tiến hành?
Trả lời
except:
pass
Hãy thử điều này:
try:
blah()
except:
pass
Tiêu chuẩn "nop" bằng Python là pass
tuyên bố:
try:
do_something()
except Exception:
pass
Vì ném ngoại lệ cuối cùng được nhớ đến bằng Python, một số các các đối tượng liên quan đến câu lệnh ném ngoại lệ được lưu giữ trực tiếp vô thời hạn (thực tế, cho đến khi ngoại lệ tiếp theo). Trong trường hợp này là quan trọng đối với bạn và (thường), bạn không cần phải nhớ những ngoại lệ ném cuối cùng, bạn có thể muốn làm như sau thay vì pass
:
try:
do_something()
except Exception:
sys.exc_clear()
này xóa ném ngoại lệ cuối cùng.
Đây là câu trả lời tốt hơn câu trả lời được chấp nhận bởi vì nó sử dụng "ngoại trừ ngoại lệ:" thay vì chỉ "ngoại trừ:" như những người khác đã chỉ ra sẽ nuốt nhầm những thứ khác mà bạn không muốn bắt như SystemExit và KeyboardInterrupt . – aculich
+1 Nó cũng xóa các lỗi đó là quan trọng khi chạy unittests và mong đợi ngoại lệ – geographika
Lưu ý rằng 'exc_clear' đã được gỡ bỏ trong python 3. https: // docs.python.org/3/whatsnew/3.0.html#index-22. Đối với một số cách để giải quyết điều này trong Python 3 xem tại đây: https://cosmicpercolator.com/2016/01/13/exception-leaks-in-python-2-and-3/ – bcattle
Có một cách mới để làm được điều này sắp tới trong Python 3.4:
from contextlib import suppress
with suppress(Exception):
# your code
Đây là cam kết rằng thêm nó: http://hg.python.org/cpython/rev/406b47c64480
Và đây là tác giả, Raymond hettinger, nói chuyện về vấn đề này và tất cả các loại độ nóng Python khác (bit có liên quan tại 43:30): http://www.youtube.com/watch?v=OSGv2VnC0go
Nếu bạn muốn mô phỏng từ khóa except
trống và cũng bỏ qua những thứ như KeyboardInterrupt
- mặc dù bạn thường không - bạn có thể sử dụng with suppress(BaseException)
.
Chỉnh sửa: Có vẻ như ignored
đã được đổi tên thành suppress
trước bản phát hành 3.4.
Tôi không chắc chắn tôi thích giải pháp này ... Tôi đoán ý tưởng là chúng tôi đã thay thế 3 dòng chỉ với 1 (thử, ngoại trừ và vượt qua tất cả được hợp nhất thành một.) Điều chính tôi phản đối là cách điều này giới thiệu một từ khóa mới có vẻ minh mẫn điều gì đó bạn có lẽ không nên làm ... có vẻ như bạn nên luôn luôn có ít nhất đăng nhập ngoại lệ bạn đang bắt ... – ArtOfWarfare
Khi một ngoại lệ được nâng lên, nó sẽ tiếp tục mã sau khi try/catch hoặc bất cứ thứ gì nằm ngoài ' with' block? – Mikhail
Điều này tương đương với việc gói mã của bạn trong một 'try ... catch: pass', vì vậy nếu một ngoại lệ được nâng lên bên trong khối, việc thực hiện sẽ tiếp tục sau khi kết thúc khối. –
- 1. Làm cách nào để bỏ qua một ngoại lệ?
- 2. Bỏ qua ngoại lệ
- 3. Truy tìm ngoại lệ bị bỏ qua trong Python?
- 4. Có một lý do hợp lệ nào để bỏ qua một ngoại lệ bị bắt
- 5. Làm thế nào để xử lý các ngoại lệ về một chủ đề hành vi
- 6. Bỏ qua Ngoại lệ trong C#
- 7. Java - bỏ qua ngoại lệ và tiếp tục
- 8. C++, bỏ qua ngoại lệ và tiếp tục mã?
- 9. Bỏ qua đặc tả ngoại lệ java ...?
- 10. Làm thế nào để cấu hình Eclipse để bỏ qua Ngoại lệ trong chế độ gỡ lỗi?
- 11. Làm thế nào để viết thuộc tính bắt ngoại lệ và loại bỏ stacktrace?
- 12. Làm thế nào để tái ném một ngoại lệ
- 13. Ngăn chặn bản in của thông báo "Ngoại lệ ... bị bỏ qua" trong Python 3
- 14. matplotlib: bỏ qua các ngoại lệ khi vẽ
- 15. Tuyên truyền C++ ngoại lệ cho Cython - python ngoại lệ
- 16. git: phân nhánh; làm thế nào để tiến hành?
- 17. Làm thế nào để nêu một ngoại lệ trong VB.NET
- 18. Làm thế nào để bỏ qua việc thực hiện hành động từ một ActionFilter?
- 19. Bỏ qua ngoại lệ trong trình kích hoạt oracle
- 20. ngoại lệ python không được nhận dạng; làm thế nào để xử lý với ngoại trừ?
- 21. Làm thế nào để loại bỏ một mô-đun Python?
- 22. Python unittest: làm thế nào để kiểm tra đối số trong một ngoại lệ?
- 23. Làm thế nào để bạn loại bỏ ngoại lệ trong Dart?
- 24. Làm thế nào để bắt một ngoại lệ trong python và nhận được một tham chiếu đến ngoại lệ, KHÔNG biết loại?
- 25. Làm cách nào để vượt qua ngoại lệ giữa các chủ đề trong python
- 26. Không thử/cuối cùng bỏ qua ngoại lệ?
- 27. Làm thế nào để bỏ qua các ngoại lệ không được quan sát với async/await trong MonoTouch?
- 28. Làm cách nào để biết khi nào an toàn để bỏ qua __cxa_throw trên điểm ngắt Tất cả ngoại lệ?
- 29. Cython, Python và KeyboardInterrupt bị bỏ qua
- 30. Làm thế nào để bỏ qua một bối cảnh
ngoại trừ Ngoại lệ: vượt qua # quan trọng không được nuốt các ngoại lệ khác! –
@Aaron - Tôi đồng ý, nhưng câu hỏi không phải là nếu đây là ý tưởng tốt/xấu – David
Điều này sẽ bắt SystemExit, KeyboardInterrupt và những thứ khác mà bạn có thể không muốn bắt. – FogleBird