Xử lý ngoại lệ trong Python: Thử, Bắt, Cuối cùng

Mục lục:

Anonim

Ngoại lệ trong Python là gì?

Một ngoại lệ là một lỗi xảy ra tại thời điểm thực thi một chương trình. Tuy nhiên, trong 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 gặp sự cố. Trong ngôn ngữ Python, các ngoại lệ sẽ tự động kích hoạt cá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 xảy ra không thường xuyên. Khi phương thức không thể xử lý ngoại lệ, nó sẽ được ném đến hàm người gọi của nó. Cuối cùng, khi một ngoại lệ bị ném ra khỏi chức năng chính, chương trình sẽ bị chấm dứt đột ngột.

Trong hướng dẫn xử lý đặc biệt Python này, bạn sẽ học:

  • Ngoại lệ trong Python là gì?
  • Các ví dụ chung về ngoại lệ
  • Tại sao bạn nên sử dụng Exceptions?
  • Quy tắc ngoại lệ
  • Cơ chế xử lý đặc biệt
    • Tuyên bố Thử
    • Tuyên bố khai thác
    • Tuyên bố tăng
  • Các lỗi Python quan trọng
  • Các ngoại lệ Python quan trọng khác
  • Lỗi so với Ngoại lệ

Các ví dụ chung về ngoại lệ:

  • Chia cho số không
  • Truy cập một tệp không tồn tại.
  • Bổ sung hai loại không tương thích
  • Cố gắng truy cập 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 đã 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 Exceptions?

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ã bình thường.
  • Một ngoại lệ là một đối tượng Python đại diện cho một lỗi.
  • Như với các bình luận 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à nâng cao khả năng đọc.
  • Cho phép bạn kích thích hậu quả khi việc xử lý lỗi diễn ra tại một nơi và theo một cách.
  • Một ngoại lệ là một phương pháp thuận tiện để xử lý các thông báo lỗi.
  • Trong Python, bạn có thể tăng một ngoại lệ trong chương trình bằng cách sử dụng phương pháp nâng ngoại lệ.
  • Việc đưa ra một ngoại lệ giúp bạn phá vỡ quá trình thực thi mã hiện tại và trả lại ngoại lệ trở lại trình diễn 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 thiết yếu của việc xử lý ngoại lệ trong Python:

  • Các ngoại lệ phải là các đố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 chính xác về mặt cú pháp, 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 một cách vô điều kiện.

Cơ chế xử lý đặc biệt

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

  1. thử
  2. nắm lấy
  3. cuối cùng
  4. phi

Tuyên bố Thử

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, nếu có bất kỳ ngoại lệ nào xảy ra trong bộ thử, bộ thử sẽ hết hạn và quyền kiểm soát chương trình chuyển sang bộ xử lý ngoại trừ phù hợp theo sau bộ thử.

Syntax:try:statement(s)

Tuyên bố khai thác

Các khối bắt lấy một đối số tại một thời điểm, đây là loại ngoại lệ mà nó có khả năng mắc phải. Những đố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ệ tổng hợp.

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

  • Bạn có thể xác định một khối catch bằng cách sử dụng từ khóa catch
  • Tham số Catch Exception luôn được đặt trong dấu ngoặc đơn
  • Nó luôn đại diện cho kiểu ngoại lệ mà khối bắt 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ử duy nhất.
  • Bạn chỉ có thể sử dụng một 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.

Thí dụ:

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

Cuối cùng là Chặn

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

Cuối cùng, mệnh đề là tùy chọn. Nó nhằm 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 KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt

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

Tuyên bố tăng

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ộ của đố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 không có.

Thí dụ:

Một ngoại lệ Python có thể là bất kỳ giá trị nào như chuỗi, lớp, số hoặc một đối tượng. Hầu hết các ngoại lệ này được nêu ra bởi lõi Python là các lớp có đối số là một thể hiện của lớp.

Các lỗi Python quan trọng

Loại lỗi Sự miêu tả
ArithmeticError 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 cho các lỗi trong các phép toán số học.
ImportError ImportError xuất hiện khi bạn đang cố gắng nhập một mô-đun không xuất hiện. Loại ngoại lệ này xảy ra nếu bạn nhập sai tên mô-đun hoặc mô-đun không có trong đường dẫn tiêu chuẩn.
IndexError Một IndexErroris được nâng lên khi bạn cố gắng tham chiếu một chuỗi nằm ngoài phạm vi.
KeyError Khi một khóa cụ thể không được tìm thấy trong từ điển, một ngoại lệ KeyError sẽ được đưa ra.
NameError Lỗi Tên được đặt ra khi một tên được tham chiếu trong mã không bao giờ tồn tại trong không gian tên cục bộ hoặc toàn cầu.
ValueError Lỗi giá trị tăng lên khi một hàm hoặc hoạt động tích hợp nhận được một đối số có thể đúng kiểu nhưng không có giá trị phù hợp.
EOFerror Loại lỗi này phát sinh khi một trong các hàm tích hợp (input () hoặc raw_input ()) đạt đến điều kiện EOF mà không đọc bất kỳ dữ liệu nào.
ZeroDivisonError Loại lỗi này xảy ra khi phép chia hoặc mô-đun cho không xảy ra đối với tất cả các kiểu số.
Lỗi IO- Loại lỗi này xuất hiện khi hoạt động đầu vào / đầu ra không thành công.
lỗi cú pháp Các lỗi cú pháp được nâng lên khi có lỗi trong cú pháp Python.
Thụt đầu dòngError Lỗi này xuất hiện khi thụt lề không được xác định đúng

Các ngoại lệ Python quan trọng khác

ngoại lệ Sự miêu tả
ArithmeticException Lỗi số học, chẳng hạn như chia cho-không.
ArraylndexOutOfBoundsException Chỉ mục mảng nằm ngoài giới hạn.
ArrayStoreException Phép gán giúp bạn đến phần tử mảng của 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, như chờ đợi trên một chuỗi đã mở khóa.
MlegalStateException Môi trường hoặc ứng dụng ở trạng thái sai.
ClassNotFoundException Không tìm thấy lớp học.
CloneNotSupportedException Cố gắng sao chép một đối tượng không triển khai giao diện Có thể sao chép.
Truy cập bất hợp pháp Quyền truy cập vào một lớp học bị từ chối.
InstantiationException Xảy ra khi bạn cố gắng tạo một đối tượng của một giao diện hoặc lớp trừu tượng.
CloneNotSupportedException 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 Ngoại lệ
Tất cả các lỗi trong Python là loại không được kiểm tra. Các trường hợp ngoại lệ bao gồm cả loại được chọn và loại không được chọn.
Lỗi xảy ra tại thời gian chạy mà trình biên dịch không xác định được. Các ngoại lệ có thể được khôi phục bằng cách xử lý chúng với sự trợ giúp của các khối try-catch.
Lỗi chủ yếu 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ụ: OutofMemoryError Ví dụ: Ngoại lệ được kiểm tra, Ngoại lệ SQL, NullPointerException, v.v.

Tóm lược

  • Một ngoại lệ là một lỗi đã xảy ra trong quá trình thực thi một 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 xảy ra không thường xuyên.
  • Các Ví dụ Phổ biến về Ngoại lệ là 1) Phân chia theo 0, 2) Truy cập tệp không tồn tại, 3) Bổ sung hai loại không tương thích.
  • Một ngoại lệ là một đối tượng Python đạ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 lấy một đối số tại một thời điểm, đây là loại ngoại lệ mà nó có khả năng mắc phải.
  • 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 ra hay không.