Nguyên nhân của một ngoại lệ thường nằm bên ngoài chương trình. Ví dụ: đầu vào không chính xác, thiết bị IO bị trục trặc, v.v. Bởi vì chương trình đột ngột kết thúc khi gặp một ngoại lệ, nó có thể gây ra thiệt hại cho tài nguyên hệ thống, chẳng hạn như các tệp. Do đó, các ngoại lệ phải được xử lý đúng cách để ngăn chặn việc chấm dứt chương trình đột ngột
Python sử dụng các từ khóa try: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 4 và try: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 5 để xử lý các trường hợp ngoại lệ. Cả hai từ khóa được theo sau bởi các khối thụt lề
cú pháp
try : #statements in try block except : #executed when error in try block
Sự cố gắng. khối chứa một hoặc nhiều câu lệnh có khả năng gặp ngoại lệ. Nếu các câu lệnh trong khối này được thực thi mà không có ngoại lệ, ngoại trừ tiếp theo. khối bị bỏ qua
Nếu ngoại lệ xảy ra, luồng chương trình được chuyển sang ngoại lệ. khối. Các câu lệnh trong khối try: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 6 nhằm xử lý nguyên nhân của ngoại lệ một cách thích hợp. Ví dụ: trả về một thông báo lỗi thích hợp
Bạn có thể chỉ định loại ngoại lệ sau từ khóa try: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 5. Khối tiếp theo sẽ chỉ được thực thi nếu xảy ra ngoại lệ được chỉ định. Có thể có nhiều mệnh đề ngoại trừ với các loại ngoại lệ khác nhau trong một khối thử. Nếu loại ngoại lệ không khớp với bất kỳ khối ngoại lệ nào, nó sẽ không được xử lý và chương trình sẽ kết thúc
Phần còn lại của các câu lệnh sau khối ngoại trừ sẽ tiếp tục được thực thi, bất kể có gặp ngoại lệ hay không
Ví dụ sau sẽ đưa ra một ngoại lệ khi chúng ta cố gắng chia một số nguyên cho một chuỗi
Thí dụ. cố gắng. ngoại trừ khối
Sao chéptry: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.")
đầu ra
Some error occurred. Out of try except blocks.
Bạn có thể đề cập đến một loại ngoại lệ cụ thể trước từ khóa except. Khối tiếp theo sẽ chỉ được thực thi nếu xảy ra ngoại lệ được chỉ định. Có thể có nhiều mệnh đề ngoại trừ với các loại ngoại lệ khác nhau trong một khối thử. Nếu loại ngoại lệ không khớp với bất kỳ khối ngoại lệ nào, nó sẽ không được xử lý và chương trình sẽ kết thúc
Thí dụ. Nắm bắt loại lỗi cụ thể
Sao chéptry: a=5 b='0' print (a+b) except TypeError: print('Unsupported operation') print ("Out of try except blocks")
đầu ra
________số 8_______
Như đã đề cập ở trên, một khối thử có thể có nhiều khối ngoại trừ. Ví dụ sau sử dụng hai khối except để xử lý hai loại ngoại lệ khác nhau
Thí dụ. Nhiều khối ngoại trừ
Sao chéptry: a=5 b=0 print (a/b) except TypeError: print('Unsupported operation') except ZeroDivisionError: print ('Division by zero not allowed') print ('Out of try except blocks')
đầu ra
Division by zero not allowed Out of try except blocks
Tuy nhiên, nếu biến b được đặt thành '0', TypeError sẽ gặp phải và được xử lý bằng khối ngoại trừ tương ứng
khác và cuối cùng
Trong Python, các từ khóa try: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 8 và try: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 9 cũng có thể được sử dụng cùng với mệnh đề try và except. Trong khi khối except được thực thi nếu ngoại lệ xảy ra bên trong khối try, khối other sẽ được xử lý nếu khối try được tìm thấy là không có ngoại lệ
cú pháp
try: #statements in try block except: #executed when error in try block else: #executed if try block is error-free finally: #executed irrespective of exception occured or not
Khối cuối cùng bao gồm các câu lệnh sẽ được xử lý bất kể có ngoại lệ xảy ra trong khối thử hay không. Kết quả là, khối try không có lỗi sẽ bỏ qua mệnh đề except và đi vào khối cuối cùng trước khi tiếp tục thực thi phần còn lại của mã. Tuy nhiên, nếu có một ngoại lệ trong khối thử, khối ngoại trừ thích hợp sẽ được xử lý và các câu lệnh trong khối cuối cùng sẽ được xử lý trước khi tiếp tục với phần còn lại của mã
Ví dụ dưới đây chấp nhận hai số từ người dùng và thực hiện phép chia của chúng. Nó thể hiện việc sử dụng các khối khác và cuối cùng
Thí dụ. thử, ngoại trừ, khác, cuối cùng chặn
Sao chéptry: print('try block') x=int(input('Enter a number: ')) y=int(input('Enter another number: ')) z=x/y except ZeroDivisionError: print("except ZeroDivisionError block") print("Division by 0 not accepted") else: print("else block") print("Division = ", z) finally: print("finally block") x=0 y=0 print ("Out of try, except, else and finally blocks." )
Lần chạy đầu tiên là một trường hợp bình thường. Các khối khác và cuối cùng được hiển thị vì khối thử không có lỗi
đầu ra
try block Enter a number: 10 Enter another number: 2 else block Division = 5.0 finally block Out of try, except, else and finally blocks.
Lần chạy thứ hai là trường hợp chia cho 0, do đó, khối except và khối cuối cùng được thực thi, nhưng khối khác không được thực thi
đầu ra
try: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 0
Trong trường hợp chạy thứ ba, một ngoại lệ chưa được phát hiện xảy ra. Khối cuối cùng vẫn được thực hiện nhưng chương trình kết thúc và không thực hiện chương trình sau khối cuối cùng
đầu ra
try: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 1
Thông thường, mệnh đề cuối cùng là nơi lý tưởng để làm sạch các hoạt động trong một quy trình. Ví dụ: đóng tệp bất kể lỗi trong thao tác đọc/ghi. Điều này sẽ được giải quyết trong chương tiếp theo
Đưa ra một ngoại lệ
Python cũng cung cấp từ khóa Some error occurred. Out of try except blocks. 0 được sử dụng trong ngữ cảnh xử lý ngoại lệ. Nó gây ra một ngoại lệ được tạo ra một cách rõ ràng. Lỗi tích hợp được nêu ra ngầm. Tuy nhiên, một ngoại lệ tùy chỉnh hoặc tích hợp sẵn có thể bị ép buộc trong quá trình thực thi
Đoạn mã sau chấp nhận một số từ người dùng. Khối thử tăng ngoại lệ ValueError nếu số nằm ngoài phạm vi cho phép
Thí dụ. Đưa ra một ngoại lệ
Sao chéptry: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 2
đầu ra
try: a=5 b='0' print(a/b) except: print('Some error occurred.') print("Out of try except blocks.") 3
Ở đây, ngoại lệ được nêu ra là loại Some error occurred. Out of try except blocks. 1. Tuy nhiên, bạn có thể xác định loại ngoại lệ tùy chỉnh của mình sẽ được nâng lên. Truy cập tài liệu Python để biết thêm về