Tiếp theo là mã của tôi:Lỗi Loại: trường hợp ngoại lệ phải được các lớp học kiểu cũ hoặc có nguồn gốc từ BaseException, không str
test = 'abc'
if True:
raise test + 'def'
Và khi tôi chạy này, nó mang lại cho tôi những TypeError
TypeError: exceptions must be old-style classes or derived from BaseException, not str
Vì vậy, loại test
nên là loại nào?
Ông có thể giải thích lý do tại sao nó là như vậy xấu để nâng cao một chuỗi như là một ngoại lệ? – BioGeek
@BioGeek Các vấn đề với chuỗi ngoại lệ chỉ bao gồm đôi khi làm việc khi một chữ được sử dụng trong cả 'nâng cao' và' ngoại trừ', không cung cấp cơ chế OO để đính kèm thông tin bổ sung vào ngoại lệ và không cho phép bắt loại nhiều loại ngoại lệ . Các ngoại lệ được thêm vào ngôn ngữ trước các lớp, và một khi các lớp ngoại lệ được thêm vào ngoại lệ chuỗi chỉ được giữ cho khả năng tương thích ngược. Loại bỏ của họ, giống như bất kỳ loại bỏ tính năng nào (mis-), đơn giản hóa ngôn ngữ. –
Cảm ơn bạn đã đề cập đến phiên bản mà tính năng này được hỗ trợ lần cuối. Điều đó đã giúp tôi. – SpaceTrucker