Câu trả lời ngắn gọn là cả hai raise MyException
và raise MyException()
làm điều tương tự. Biểu mẫu đầu tiên này tự động khởi tạo ngoại lệ của bạn.
Phần có liên quan từ tài liệu cho biết, " raise đánh giá biểu thức đầu tiên là đối tượng ngoại lệ. Nó phải là một lớp con hoặc một thể hiện của BaseException. Nếu nó là một lớp, thể hiện ngoại lệ sẽ nhận được khi cần bằng cách khởi tạo lớp với Không có đối số."
Điều đó nói rằng, mặc dù ngữ nghĩa giống nhau, nhưng dạng thứ nhất nhanh hơn về mặt vi mô, và dạng thứ hai linh hoạt hơn (vì bạn có thể chuyển nó đối số nếu cần).
Kiểu thông thường mà hầu hết mọi người sử dụng trong Python (tức là trong thư viện chuẩn, trong các ứng dụng phổ biến và trong nhiều sách) là sử dụng raise MyException
khi không có đối số. Mọi người chỉ khởi tạo ngoại lệ trực tiếp khi có một số đối số cần được chuyển. Ví dụ: raise KeyError(badkey)
.