bài viết của pzrq nói để sử dụng:
str(e)
Đây chính xác là những gì tôi cần.
(Nếu bạn đang ở trong một môi trường unicode, có vẻ như:
unicode(e)
sẽ hoạt động và có vẻ như nó hoạt động tốt trong môi trường không unicode)
Pzrq nói rất nhiều thứ hay ho khác, nhưng tôi gần như đã bỏ lỡ câu trả lời của họ do tất cả những thứ tốt. Vì tôi không có 50 điểm nên tôi không thể nhận xét về câu trả lời của họ để cố gắng thu hút sự chú ý vào giải pháp đơn giản hiệu quả và vì tôi không có 15 điểm nên tôi không thể bỏ phiếu trả lời, nhưng tôi có thể đăng (cảm thấy lạc hậu, nhưng ồ) - vì vậy ở đây tôi đang đăng bài - có lẽ mất điểm vì điều đó ...
Vì quan điểm của tôi là thu hút sự chú ý vào câu trả lời của pzrq, xin vui lòng đừng trừng mắt và bỏ lỡ nó trong tất cả những điều dưới đây. vài dòng đầu tiên của bài này là quan trọng nhất.
Câu chuyện của tôi:
Vấn đề tôi đến đây là nếu bạn muốn bắt một ngoại lệ từ một lớp mà bạn không có quyền kiểm soát - thì sao ??? Tôi chắc chắn sẽ không phân lớp tất cả các lớp có thể mà mã của tôi sử dụng trong một nỗ lực để có thể nhận được một thông báo trong số tất cả các ngoại lệ có thể!
Tôi đang sử dụng:
except Exception as e:
print '%s (%s)' % (e.message,type(e))
mà, như tất cả chúng ta đều biết, đưa ra cảnh báo mà OP đã hỏi về (điều này đã đưa tôi đến đây), và điều này, mà pzrq đưa ra như một cách để làm điều đó:
except Exception as e:
print '%s (%s)' % (str(e),type(e))
đã không.
Tôi không ở trong một môi trường unicode, nhưng câu trả lời của jjc khiến tôi tự hỏi, vì vậy tôi phải thử nó. Trong bối cảnh này, điều này trở thành:
except Exception as e:
print '%s (%s)' % (unicode(e),type(e))
điều mà tôi ngạc nhiên, hoạt động chính xác như str (e) - vì vậy bây giờ đó là những gì tôi đang sử dụng.
Không biết liệu 'str (e) / unicode (e)' có phải là 'cách Python được phê duyệt' hay không và có lẽ tôi sẽ tìm hiểu tại sao điều đó không tốt khi tôi lên 3.0, nhưng người ta hy vọng rằng khả năng xử lý một ngoại lệ bất ngờ (*) mà không chết và vẫn nhận được một số thông tin từ nó sẽ không bao giờ biến mất ...
(*) Hừm. "ngoại lệ bất ngờ" - Tôi nghĩ rằng tôi chỉ nói lắp!