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
   62   63   64   65   66   67   68   69   70   71   72