Page 67 - Python Simple
P. 67
8. Lỗi và biệt lệ http://www.vithon.org/tutorial/2.5/node10.html
previous -- state at beginning of transition
next -- attempted new state
message -- explanation of why the specific transition is not allowed
"""
def __init__(self, previous, next, message):
self.previous = previous
self.next = next
self.message = message
Đa số biệt lệ được định nghĩa với tên tận cùng bằng ``Error'', tương tự như cách đặt
tên của các biệt lệ chuẩn.
Nhiều mô-đun chuẩn định nghĩa biệt lệ riêng cho chúng để thông báo những lỗi mà
có thể xảy ra trong các hàm chúng định nghĩa. Thông tin thêm về các lớp được trình
bày trong chương 9, ``Lớp''.
8.6 Định nghĩa cách xử lý
try (câu lệnh) có một vế không bắt buộc khác với mục đích định nghĩa những tác vụ
dọn dẹp (clean-up action) mà sẽ được thực hiện trong mọi trường hợp. Ví dụ:
>>> try:
... raise KeyboardInterrupt
... finally:
... print 'Goodbye, world!'
...
Goodbye, world!
Traceback (most recent call last):
File "<stdin>", line 2, in ?
KeyboardInterrupt
A vế finally luôn được thực thi trước khi rời khỏi câu lệnh try , cho dù có xảy ra biệt
lệ hay không. Khi một biệt lệ đã xảy ra trong vế try và không được xử lý bởi vế
except (hoặc nó đã xảy ra trong một vế except hay else ), nó sẽ được nâng lại sau
khi vế finally đã được thực thi. Vế finally cũng được thực thi ``trên đường ra'' khi
bất kỳ vế nào của câu lệnh try được bỏ lại thông qua câu lệnh break, continue hay
return . Một ví dụ phức tạp hơn:
>>> def divide(x, y):
... try:
... result = x / y
... except ZeroDivisionError:
... print "division by zero!"
... else:
... print "result is", result
... finally:
... print "executing finally clause"
...
>>> divide(2, 1)
result is 2
executing finally clause
>>> divide(2, 0)
6 of 7 08/31/2011 10:27 AM