Có cách nào để biết chuỗi đã thoát bình thường hay do ngoại lệ không?Mã thoát của Python
9
A
Trả lời
13
Như đã đề cập, trình bao bọc quanh lớp Thread có thể bắt trạng thái đó. Đây là một ví dụ.
>>> from threading import Thread
>>> class MyThread(Thread):
def run(self):
try:
Thread.run(self)
except Exception as self.err:
pass # or raise
else:
self.err = None
>>> mt = MyThread(target=divmod, args=(3, 2))
>>> mt.start()
>>> mt.join()
>>> mt.err
>>> mt = MyThread(target=divmod, args=(3, 0))
>>> mt.start()
>>> mt.join()
>>> mt.err
ZeroDivisionError('integer division or modulo by zero',)
-1
Bạn có thể đặt một số biến toàn cầu thành 0 nếu thành công hoặc khác 0 nếu có ngoại lệ. Đây là một quy ước khá chuẩn.
Tuy nhiên, bạn cần phải bảo vệ biến này bằng mutex hoặc semaphore. Hoặc bạn có thể chắc chắn rằng chỉ có một chủ đề sẽ bao giờ viết cho nó và tất cả những người khác sẽ chỉ đọc nó.
0
Để chức năng của chuỗi bắt ngoại lệ. (Bạn có thể thực hiện việc này bằng chức năng trình bao bọc đơn giản chỉ cần gọi hàm chuỗi cũ bên trong một số try
... except
hoặc try
... except
... else
khối). Sau đó, câu hỏi chỉ trở thành "làm thế nào để truyền thông tin từ một chủ đề khác", và tôi đoán bạn đã biết làm thế nào để làm điều đó.
Các vấn đề liên quan
- 1. -Mã thoát của mã lệnh không giống như mã thoát của mã lệnh
- 2. lấy mã thoát cho chương trình python
- 3. Tiêu chuẩn mã thoát trong Python
- 4. Mã thoát của lệnh chuyển hướng
- 5. ANT không nhận được mã thoát bằng lệnh python
- 6. bash - mã thoát màu
- 7. Chuỗi thoát với python mysql.connector
- 8. mã ANDing thoát trong bash
- 9. Powershell Git Mã Hook Thoát
- 10. Thoát khỏi dòng lệnh python
- 11. Danh sách các mã thoát của ứng dụng Windows
- 12. Các mã thoát hiểm của javaws có bị hỏng không?
- 13. Chuỗi thoát Python cho MySQL
- 14. Python thoát khỏi byte b''
- 15. Cách thoát bằng Python 3.2?
- 16. Thoát Shell Script Dựa trên Quy trình Thoát Mã số
- 17. Python, Nhấn phím bất kỳ để thoát
- 18. Tên bảng Python, MySQLdb và thoát?
- 19. Mã thoát không chính xác trong python khi gọi cửa sổ script
- 20. "Csc.exe" đã thoát với mã -1073741819
- 21. quá trình Bash thay và thoát mã
- 22. Tai nạn PhantomJS - Mã thoát 126
- 23. NuGet cài đặt mã thoát 9009
- 24. Cách đọc mã thoát PowerShell qua C#
- 25. Truy xuất mã thoát MSIEXEC trong PowerShell
- 26. Cách thoát khỏi mã hóa url?
- 27. Chương trình đã thoát với mã -2147483645
- 28. JVM đã chấm dứt. Mã thoát = -1
- 29. Ký tự thoát trong Python và sqlite
- 30. Python: json.loads cuộn cảm trên thoát
0 để thành công có thể là một quy ước khá chuẩn, nhưng không phải là một boolean 'succeded' sẽ dễ dàng hơn một chút trên trình thông dịch thịt? –
Nó không phải là toàn cầu nếu tôi phân lớp Thread, chỉ cần một biến thành viên trong đó để cho biết thành công. Tôi đã chỉ tự hỏi nếu có bất kỳ cách tích hợp để làm điều này, giống như mã thoát khỏi quá trình. –
Chủ đề và trạng thái toàn cầu. Hai thị hiếu tuyệt vời tthat tate gsrat eogetherrrrrrrrrrrrrrrr Phân đoạn lỗi, lõi đổ. – Glyph