Cả hai đều phù hợp; các hình thức sau cho phép của bạn đính kèm đối số ngoại lệ của bạn:
if len(sys.argv) == 1:
raise EmptyArgs('Specify at least 1 argument')
Bạn cũng có thể vượt qua trong các đối số là một giá trị thứ hai như một tuple trong báo cáo tăng:
if len(sys.argv) == 1:
raise EmptyArgs, ('Specify at least 1 argument',)
nhưng một tổ chức phi-tuple đơn giá trị sẽ làm việc quá, và được coi là một cuộc tranh luận duy nhất:
if len(sys.argv) == 1:
raise EmptyArgs, 'Specify at least 1 argument'
và một giá trị thứ ba để raise
bạn hãy chỉ định một traceback thay thế, mà sau đó được sử dụng thay cho một traceback đó sẽ được tạo ra cho các vị trí hiện tại trong các mã:
if len(sys.argv) == 1:
raise EmptyArgs, ('Specify at least 1 argument',), traceback_object
Xem tài liệu cho các raise
statement
Lưu ý rằng khi bạn sử dụng lập luận cho ngoại lệ của bạn, The Python styleguide PEP 8 thích bạn cung cấp một ví dụ ngoại lệ, và không phải là một lớp học:
Khi tăng ngoại lệ, hãy sử dụng raise ValueError('message')
thay vì biểu mẫu cũ hơn raise ValueError, 'message'
.
Biểu mẫu sử dụng song song được ưu tiên vì khi đối số ngoại lệ dài hoặc bao gồm định dạng chuỗi, bạn không cần phải sử dụng ký tự tiếp tục dòng nhờ dấu ngoặc đơn có chứa. Biểu mẫu cũ hơn sẽ bị xóa bằng Python 3.
Python 3 sẽ không hỗ trợ biểu mẫu đó nữa.
Tôi sẽ thêm điều đó vào Python 3.0, hỗ trợ cho việc tạo các bộ dữ liệu như 'nâng cao EmptyArgs," văn bản "' [đã bị xóa] (http://www.python.org/dev/peps/pep-3109 /). –
nâng cấp lớp ngoại lệ không phải là cách để đi –
@AnuragUniyal: Python 3 hỗ trợ biểu mẫu đó tốt, không có vấn đề gì với biểu mẫu đó. Nó không còn hỗ trợ 'nâng cao class, value, tb' form. –