Page 68 - Python Simple
P. 68

8. Lỗi và biệt lệ                                               http://www.vithon.org/tutorial/2.5/node10.html



                 division by zero!
                 executing finally clause
                 >>> divide("2", "1")
                 executing finally clause
                 Traceback (most recent call last):
                   File "<stdin>", line 1, in ?
                   File "<stdin>", line 3, in divide
                 TypeError: unsupported operand type(s) for /: 'str' and 'str'

             Như bạn có thể thấy, vế finally được thực thi trong mọi trường hợp. TypeError được
             nâng vì chia hai chuỗi không được xử lý bởi vế except và vì thế nên được nâng lại sau
             khi vế finally đã được thực thi.

             Trong các ứng dụng thực thế, vế finally được dùng để trả lại những tài nguyên
             ngoài (như tập tin, hoặc kết nối mạng), cho dù việc sử dụng tài nguyên có thành
             công hay không.


             8.7 Định nghĩa xử lý có sẵn



             Một số đối tượng định nghĩa các tác vụ dọn dẹp chuẩn để thực thi khi một đối tượng
             không còn được cần đến, cho dù việc xử dụng đối tượng là thành công hay thất bại.
             Xem qua ví dụ sau, nó thử mở một tập tin và viết nội dung của nó ra màn hình.

                 for line in open("myfile.txt"):
                     print line

             Vấn đề với đoạn mã trên là nó để tập tin ngỏ trong một thời gian không xác định sau
             khi đoạn mã đã kết thúc. Đây không phải là vấn đề gì trong các đoạn kịch bản đơn
             giản, nhưng có thể là một vấn đề phức tạp đối với các ứng dụng lớn hơn. Câu lệnh
             with cho phép các đối tượng như tập tin được dùng theo một cách đảm bảo chúng sẽ
             được dọn dẹp đúng lúc và đúng đắn.
                 with open("myfile.txt") as f:
                     for line in f:
                         print line

             Sau khi câu lệnh được thực thi, tập tin f luôn được đóng lại, cho dù gặp phải vấn đề
             trong khi xử lý các dòng. Các đối tượng khác mà cung cấp những tác vụ dọn dẹp định
             nghĩa sẵn sẽ cho biết về điểm này trong tài liệu của chúng.


             Phiên bản 2.5, tài liệu được cập nhật ngày 19, tháng 09, năm 2006.
             Xem Về tài liệu này... về cách đề nghị thay đổi.





















     7 of 7                                                                                   08/31/2011 10:27 AM
   63   64   65   66   67   68   69   70   71   72   73