Có gì sai với đoạn mã sau (dưới Python 2.7.1):Lỗi ngoại lệ phải bắt nguồn từ BaseException ngay cả khi nó (Python 2.7)
class TestFailed(BaseException):
def __new__(self, m):
self.message = m
def __str__(self):
return self.message
try:
raise TestFailed('Oops')
except TestFailed as x:
print x
Khi tôi chạy nó, tôi nhận được:
Traceback (most recent call last):
File "x.py", line 9, in <module>
raise TestFailed('Oops')
TypeError: exceptions must be old-style classes or derived from BaseException, not NoneType
Nhưng có vẻ với tôi rằng TestFailed
có nguồn gốc từ BaseException
.
Đối với những người khác không thể hiểu tại sao họ gặp phải lỗi này: hãy kiểm tra để đảm bảo bạn không vô tình thực hiện 'def MyException (Ngoại lệ): pass' thay vì' class MyException bắt buộc (Ngoại lệ)): pass'. Lỗi dễ dàng để bỏ lỡ. –