Tôi viết một số mã trong Python một cái gì đó như thế này:Trong Python, tôi có thể ngăn một hàm bắt được KeyboardInterrupt và SystemExit không?
import sys
try:
for x in large_list:
function_that_catches_KeyboardInterrupt(x)
except KeyboardInterrupt:
print "Canceled!"
sys.exit(1)
Khi tôi cố gắng làm gián đoạn vòng lặp, tôi về cơ bản cần phải giữ phím kiểm soát + C đủ lâu để hủy bỏ tất cả các gọi của hàm cho tất cả các thành phần của large-list
và chỉ khi đó chương trình của tôi thoát.
Có cách nào tôi có thể ngăn chặn chức năng bắt KeyboardInterrupt để tôi có thể tự mình bắt được không? Cách duy nhất tôi có thể nghĩ sẽ là lạm dụng luồng bằng cách tạo ra một chuỗi riêng biệt chỉ để gọi hàm, nhưng điều đó có vẻ quá mức.
Chỉnh sửa: Tôi đã kiểm tra mã vi phạm (mà tôi không thể dễ dàng thay đổi) và nó thực sự sử dụng một số except:
trống, vì vậy ngay cả sys.exit(1)
bị phát hiện là một ngoại lệ SystemExit
. Làm cách nào để thoát khỏi khối except:
và thoát khỏi chương trình của tôi?
Không có vẻ quá mức với tôi ... cũng bởi vì mọi giải pháp khác tôi có thể đưa ra ma thuật ... – GaretJax
Lưu ý rằng bạn không cần phải sử dụng một chuỗi cho mỗi lời gọi, chỉ có một là đủ. ;-) – GaretJax