Python Xử lý ngoại lệ: thử, bắt, cuối cùng và nâng cao [Ví dụ]

Xử lý ngoại lệ trong Python?

Ngoại lệ là lỗi xảy ra tại thời điểm thực hiện chương trình. Tuy nhiên, khi chạy một chương trình, Python tạo ra một ngoại lệ cần được xử lý để tránh chương trình của bạn bị lỗi. TRONG Python ngôn ngữ, ngoại lệ tự động kích hoạt khi có lỗi hoặc chúng có thể được kích hoạt và chặn bởi mã của bạn.

Ngoại lệ chỉ ra rằng, mặc dù sự kiện có thể xảy ra nhưng loại sự kiện này hiếm khi xảy ra. Khi phương thức không thể xử lý ngoại lệ, nó sẽ được ném vào hàm gọi của nó. Cuối cùng, khi một ngoại lệ bị loại ra khỏi hàm chính, chương trình sẽ bị chấm dứt đột ngột.

Các ví dụ phổ biến về ngoại lệ

  • Chia cho số không
  • Truy cập một tập tin không tồn tại.
  • Bổ sung hai loại không tương thích
  • Đang cố gắng truy cập vào một chỉ mục không tồn tại của một chuỗi
  • Xóa bảng khỏi máy chủ cơ sở dữ liệu bị ngắt kết nối.
  • Rút tiền ATM nhiều hơn số tiền khả dụng

Tại sao bạn nên sử dụng Ngoại lệ?

Dưới đây là những lý do để sử dụng ngoại lệ trong Python:

  • Xử lý ngoại lệ cho phép bạn tách mã xử lý lỗi khỏi mã thông thường.
  • Một ngoại lệ là một Python vật đại diện cho một lỗi.
  • Giống như nhận xét về mã, các ngoại lệ giúp bạn nhắc nhở bản thân về những gì chương trình mong đợi.
  • Nó làm rõ mã và tăng cường khả năng đọc.
  • Cho phép bạn đưa ra các hậu quả khi việc xử lý lỗi diễn ra ở một nơi và theo một cách.
  • Ngoại lệ là một phương pháp thuận tiện để xử lý các thông báo lỗi.
  • In Python, bạn có thể đưa ra một ngoại lệ trong chương trình bằng cách sử dụng phương thức nâng cao ngoại lệ.
  • Việc đưa ra một ngoại lệ sẽ giúp bạn phá vỡ quá trình thực thi mã hiện tại và trả lại ngoại lệ đó cho đến khi nó được xử lý.
  • Xử lý ngoại lệ cho các thành phần không thể xử lý trực tiếp.

Quy tắc ngoại lệ

Dưới đây là một số quy tắc cơ bản của Python xử lý ngoại lệ:

  • Các ngoại lệ phải là đối tượng lớp
  • Đối với các ngoại lệ của lớp, bạn có thể sử dụng câu lệnh try với mệnh đề ngoại trừ đề cập đến một lớp cụ thể.
  • Ngay cả khi một câu lệnh hoặc biểu thức đúng về mặt cú pháp, nó vẫn có thể hiển thị lỗi khi cố gắng thực thi nó.
  • Các lỗi được tìm thấy trong quá trình thực thi được gọi là ngoại lệ và chúng không gây tử vong vô điều kiện.

Python Cơ chế xử lý ngoại lệ

Việc xử lý ngoại lệ được quản lý bởi 5 từ khóa sau:

  1. thử
  2. bắt
  3. cuối cùng
  4. quăng

Python Hãy thử tuyên bố

Câu lệnh try bao gồm từ khóa try, theo sau là dấu hai chấm (:) và một bộ mã trong đó có thể xảy ra ngoại lệ. Nó có một hoặc nhiều mệnh đề.

Trong quá trình thực thi câu lệnh try, nếu không có ngoại lệ nào xảy ra thì trình thông dịch sẽ bỏ qua các trình xử lý ngoại lệ cho câu lệnh try cụ thể đó.

Trong trường hợp có bất kỳ ngoại lệ nào xảy ra trong bộ try, bộ try sẽ hết hạn và quyền điều khiển chương trình sẽ được chuyển sang trình xử lý except phù hợp theo sau bộ try.

Syntax:
try:
statement(s)

Tuyên bố đánh bắt

Các khối bắt mỗi lần lấy một đối số, đây là loại ngoại lệ mà nó có khả năng bắt được. Các đối số này có thể bao gồm từ một loại ngoại lệ cụ thể có thể thay đổi thành một loại ngoại lệ chung.

Quy tắc cho khối bắt:

  • Bạn có thể xác định khối bắt bằng cách sử dụng từ khóa bắt
  • Tham số Catch Exception luôn được đặt trong dấu ngoặc đơn
  • Nó luôn đại diện cho loại ngoại lệ bắt các khối xử lý.
  • Mã xử lý ngoại lệ được viết giữa hai dấu ngoặc nhọn {}.
  • Bạn có thể đặt nhiều khối bắt trong một khối thử.
  • Bạn chỉ có thể sử dụng khối bắt sau khối thử.
  • Tất cả khối bắt phải được sắp xếp từ lớp con đến ngoại lệ lớp cha.

Ví dụ:

try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}

Tuyên bố cuối cùng trong Python

Khối cuối cùng luôn thực thi bất kể ngoại lệ có được ném hay không. Từ khóa cuối cùng cho phép bạn tạo một khối mã theo sau khối thử bắt.

Cuối cùng, mệnh đề là tùy chọn. Nó nhằm mục đích xác định các hành động dọn dẹp cần được thực hiện trong mọi điều kiện.

try:
    raise KeyboardInterrupt
finally:
    print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt

Cuối cùng, mệnh đề được thực thi trước câu lệnh try.

Đưa ra tuyên bố trong Python

Câu lệnh raise chỉ định một đối số khởi tạo đối tượng ngoại lệ. Ở đây, dấu phẩy theo sau tên ngoại lệ và đối số hoặc bộ đối số theo sau dấu phẩy.

Cú pháp:

raise [Exception [, args [, traceback]]]

Trong cú pháp này, đối số là tùy chọn và tại thời điểm thực thi, giá trị đối số ngoại lệ luôn là không.
Ví dụ:
A Python ngoại lệ có thể là bất kỳ giá trị nào như chuỗi, lớp, số hoặc đối tượng. Hầu hết các trường hợp ngoại lệ này được nêu ra bởi Python core là các lớp có đối số là một thể hiện của lớp.

Quan trọng Python lỗi

Loại lỗi Mô tả
Lỗi số học ArithmeticError hoạt động như một lớp cơ sở cho tất cả các ngoại lệ số học. Nó được nêu ra khi có lỗi trong các phép tính số học.
Lỗi nhập khẩu ImportError được nêu ra khi bạn đang cố gắng nhập một mô-đun không có. Loại ngoại lệ này xảy ra nếu bạn mắc lỗi đánh máy trong tên mô-đun hoặc mô-đun không có trong đường dẫn chuẩn.
Chỉ mụcLỗi Lỗi IndexError xuất hiện khi bạn cố gắng tham chiếu một chuỗi nằm ngoài phạm vi.
Lỗi chính Khi không tìm thấy một khóa cụ thể trong từ điển, ngoại lệ KeyError sẽ xuất hiện.
TênLỗi NameError được nêu ra khi một tên được nhắc đến trong mã không bao giờ tồn tại trong không gian tên cục bộ hoặc chung.
Giá trịError Lỗi giá trị xuất hiện khi một hàm hoặc thao tác tích hợp nhận được một đối số có thể đúng loại nhưng không có giá trị phù hợp.
lỗi EOF Loại lỗi này phát sinh khi một trong các hàm dựng sẵn (input() hoặc raw_input()) đạt đến điều kiện EOF mà không đọc bất kỳ dữ liệu nào.
ZeroDivisonLỗi Loại lỗi này xảy ra khi phép chia hoặc mô-đun cho 0 xảy ra đối với tất cả các loại số.
Lỗi IO- Loại lỗi này phát sinh khi thao tác đầu vào/đầu ra không thành công.
lỗi cú pháp Lỗi cú pháp xuất hiện khi có lỗi trong Python cú pháp.
Lỗi thụt lề Lỗi này xuất hiện khi thụt lề không được xác định chính xác

quan trọng khác Python Trường hợp ngoại lệ

Ngoại lệ Mô tả
Số họcException Lỗi số học, chẳng hạn như chia cho 0.
ArraylndexOutOfBoundsNgoại lệ Chỉ số mảng nằm ngoài giới hạn.
ArrayStoreNgoại lệ Việc gán giúp bạn đối với phần tử mảng có kiểu không tương thích.
ClassCastException Diễn viên không hợp lệ
MlegalMonitorStateException Hoạt động giám sát bất hợp pháp, giống như chờ đợi trên một chuỗi đã được mở khóa.
MlegalStateNgoại lệ Môi trường hoặc ứng dụng ở trạng thái sai.
LớpNotFoundNgoại lệ Không tìm thấy lớp học.
Bản saoKhông được hỗ trợNgoại lệ Cố gắng sao chép một đối tượng không triển khai giao diện Cloneable.
Truy cập bất hợp phápNgoại lệ Truy cập vào một lớp học bị từ chối.
Khởi tạo ngoại lệ Xảy ra khi bạn cố gắng tạo một đối tượng của giao diện hoặc lớp trừu tượng.
Bản saoKhông được hỗ trợNgoại lệ Cố gắng sao chép một đối tượng không triển khai giao diện.

Lỗi so với ngoại lệ

lỗi Trường hợp ngoại lệ
Tất cả các lỗi trong Python là loại không được kiểm tra. Các ngoại lệ bao gồm cả loại được kiểm tra và không được kiểm tra.
Lỗi xảy ra trong thời gian chạy mà trình biên dịch không biết. Các ngoại lệ có thể được phục hồi bằng cách xử lý chúng với sự trợ giúp của các khối thử bắt.
Lỗi chủ yếu xảy ra do môi trường mà ứng dụng đang chạy. Bản thân ứng dụng gây ra ngoại lệ.
Ví dụ:
Lỗi bộ nhớ
Ví dụ:
Đã kiểm tra các ngoại lệ, ngoại lệ SQL, NullPointerException, v.v.

Tổng kết

  • Ngoại lệ là lỗi xảy ra trong quá trình thực thi chương trình.
  • Ngoại lệ chỉ ra rằng, mặc dù sự kiện có thể xảy ra nhưng loại sự kiện này hiếm khi xảy ra.
  • Các ví dụ phổ biến về ngoại lệ là 1) Chia cho 2, 3) Truy cập một tệp không tồn tại, XNUMX) Bổ sung hai loại không tương thích.
  • Một ngoại lệ là một Python đối tượng đại diện cho một lỗi.
  • Câu lệnh try bao gồm từ khóa try, theo sau là dấu hai chấm (:) và một bộ mã trong đó có thể xảy ra ngoại lệ. Nó có một hoặc nhiều mệnh đề.
  • Các khối bắt mỗi lần lấy một đối số, đây là loại ngoại lệ mà nó có khả năng bắt được.
  • Câu lệnh raise chỉ định một đối số khởi tạo đối tượng ngoại lệ.
  • Cuối cùng, khối luôn thực thi bất kể ngoại lệ có được ném hay không.