2012-12-19 35 views

Trả lời

214

Nó có 2 mục đích.

yentup has given the first one.

Nó được sử dụng để nâng cao các lỗi của riêng bạn.

if something: 
    raise Exception('My error!') 

Thứ hai là để reraise các hiện ngoại lệ trong một trình xử lý ngoại lệ, vì vậy nó có thể được xử lý tiếp tục lên gọi stack.

try: 
    generate_exception() 
except SomeException as e: 
    if not can_handle(e): 
    raise 
    handle_exception(e) 
+15

Tôi đã gõ và nhận "lỗi toàn cầu" lỗi "không được xác định". Đối với những người mới dùng Python, bạn cần "nâng cao ngoại lệ ('Lỗi của tôi!')". Bạn thay thế "lỗi" bằng tên Ngoại lệ của mình. Một danh sách các ngoại lệ chuẩn mà bạn có thể sử dụng ở đây: http://docs.python.org/2/library/exceptions.html –

+2

Lưu ý rằng trong python 3.x cú pháp mới là 'ngoại trừ SomeException là e:' – user1735003

+0

@ user1735003 , cái gì là 'như e' làm gì? Nó khác với 'ngoại trừ SomeException' như thế nào? –

28

Được sử dụng để tăng lỗi.

if something: 
    raise Exception('My error!') 

Một số ví dụ here

6

raise gây ra một ngoại lệ được nâng lên. Một số ngôn ngữ khác sử dụng động từ 'ném' thay thế.

Mục đích là báo hiệu tình huống lỗi; nó cờ rằng tình hình là đặc biệt với dòng chảy bình thường.

Ngoại lệ tăng lên có thể bị bắt lại bằng mã 'ngược dòng' (khối xung quanh hoặc chức năng trước đó trên ngăn xếp) để xử lý, sử dụng kết hợp try, except.

6

Bạn có thể sử dụng nó để nâng lỗi như một phần của kiểm tra lỗi:

if (a < b): 
    raise ValueError() 

Hoặc xử lý một số lỗi, và sau đó vượt qua chúng trên như một phần của lỗi xử lý:

try: 
    f = open('file.txt', 'r') 
except IOError: 
    # do some processing here 
    # and then pass the error on 
    raise 
17

raise mà không có bất kỳ đối số nào là việc sử dụng cú pháp python đặc biệt. Nó có nghĩa là có được ngoại lệ và tái nâng cao nó. Nếu việc sử dụng này có thể được gọi là reraise.

raise 

Từ The Python Language Reference:

Nếu không có biểu thức có mặt, nâng cao lại làm tăng ngoại lệ trước rằng đã hoạt động trong phạm vi hiện tại.

Nếu raise được sử dụng một mình mà không cần bất kỳ lý lẽ được sử dụng đúng cho reraise -ing.Nếu được thực hiện trong tình hình đó không phải là ở một reraise của ngoại lệ khác, các lỗi sau đây được hiển thị: RuntimeError: No active exception to reraise

5

Bên cạnh raise Exception("message")raise Python 3 đã giới thiệu một hình thức mới, raise Exception("message") from e. Nó được gọi là chuỗi ngoại lệ, nó cho phép bạn giữ nguyên ngoại lệ ban đầu (nguyên nhân gốc rễ) với truy nguyên của nó.

Nó rất giống với ngoại lệ bên trong từ C#.

Thông tin thêm: https://www.python.org/dev/peps/pep-3134/

Các vấn đề liên quan