Python xử lý các lỗi ngoại lệ như thế nào?

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ép

try:
    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ép

try:
    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ép

try:
    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ép

try:
    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ép

try:
    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ề

Python xử lý tất cả các lỗi như thế nào?

Thử và Câu lệnh ngoại trừ – Bắt tất cả các ngoại lệ . Các câu lệnh có thể đưa ra các ngoại lệ được giữ bên trong mệnh đề try và các câu lệnh xử lý ngoại lệ được viết bên trong mệnh đề ngoại trừ.

Python xử lý các ngoại lệ tùy chỉnh như thế nào?

Trong Python, người dùng có thể xác định các ngoại lệ tùy chỉnh bằng cách tạo một lớp mới . Lớp ngoại lệ này phải được dẫn xuất, trực tiếp hoặc gián tiếp, từ lớp Ngoại lệ tích hợp. Hầu hết các ngoại lệ tích hợp cũng bắt nguồn từ lớp này.