Hướng dẫn how do you catch all exceptions in python? - làm thế nào để bạn bắt được tất cả các trường hợp ngoại lệ trong python?

Một trong những cuộc đấu tranh mà các nhà phát triển phải đối mặt là làm thế nào để bắt tất cả các ngoại lệ của Python. Các nhà phát triển thường phân loại các ngoại lệ là lỗi mã hóa dẫn đến lỗi khi chạy chương trình. Một số nhà phát triển vẫn không phân biệt giữa các lỗi và ngoại lệ.

Trong trường hợp phát triển ứng dụng Python, một chương trình Python đã chấm dứt ngay khi nó gặp phải một lỗi không được xử lý. Vì vậy, để thiết lập sự khác biệt giữa các lỗi và ngoại lệ, có hai loại lỗi:

  • Lỗi cú pháp
  • Lỗi logic (ngoại lệ)

Đầu tiên, hãy để kiểm tra các lỗi cú pháp. Lỗi cú pháp Python là do không tuân theo cấu trúc (cú pháp) thích hợp của ngôn ngữ. Nó còn được gọi là lỗi phân tích cú pháp.

Đây là một ví dụ:

>>> lứa tuổi = {

& nbsp; & nbsp; & nbsp; & nbsp; ‘jj, 2, 2,

& nbsp; & nbsp; & nbsp; & nbsp; ‘yoyo,: 4

}

in (f hèjj là {tuổi [JJ JJ]} năm tuổi.

Đầu ra:

JJ đã 2 tuổi.

Đây là một mã đơn giản không có lỗi cú pháp. Sau đó, chúng tôi sẽ thêm một biến số khác nhau:

>>> lứa tuổi = {

& nbsp; & nbsp; & nbsp; & nbsp; ‘jj, 2, 2,

& nbsp; & nbsp; & nbsp; & nbsp; ‘yoyo,: 4

}

}

in (f hèjj là {tuổi [JJ JJ]} năm tuổi.

Đầu ra:

JJ đã 2 tuổi.

Đây là một mã đơn giản không có lỗi cú pháp. Sau đó, chúng tôi sẽ thêm một biến số khác nhau:

     ^

& nbsp; & nbsp; & nbsp; & nbsp; ‘tomtom,: 6

Khi kiểm tra, bạn có thể thấy một cú pháp không hợp lệ trên mục thứ hai, Yoyo, bên trong mảng với dấu phẩy bị thiếu. Cố gắng chạy mã này và bạn sẽ nhận được một dấu vết:

Tệp ”", dòng 1

& nbsp; & nbsp; & nbsp; & nbsp; >>> lứa tuổi = {{

Lỗi cú pháp: cú pháp không hợp lệexceptions.

Như bạn nhận thấy, thông báo Traceback đã không xác định chính xác dòng nơi xảy ra lỗi cú pháp. Trình thông dịch Python chỉ cố gắng xác định vị trí ở vị trí của cú pháp không hợp lệ. Nó chỉ chỉ ra nơi đầu tiên nó nhận thấy vấn đề. Vì vậy, khi bạn nhận được một TraceBack Cú pháp, điều đó có nghĩa là bạn nên kiểm tra trực quan xem trình thông dịch có chỉ vào lỗi đúng hay không.


Hướng dẫn how do you catch all exceptions in python? - làm thế nào để bạn bắt được tất cả các trường hợp ngoại lệ trong python?


Trong ví dụ trên, trình thông dịch gặp một cú pháp không hợp lệ bên trong một mảng có tên là Ages. Vì vậy, nó chỉ ra rằng có một cái gì đó sai trong mảng.

Đây là lỗi cú pháp. & NBSP;

Trong hầu hết các trường hợp, một nhà phát triển Python viết một đoạn mã ấn tượng đã sẵn sàng để thực thi. Chương trình trở thành một mô hình học máy mạnh mẽ, nhưng trong quá trình thực hiện, Python đã đưa ra một lỗi bất ngờ. Thật không may, nó không còn là lỗi cú pháp điển hình. Các nhà phát triển hiện đang xử lý các lỗi logic, còn được gọi là ngoại lệ.

Hãy để đào sâu vào các trường hợp ngoại lệ.

Ngoại lệ là lỗi xảy ra trong thời gian chạy. Hầu hết, những lỗi này là hợp lý. Ví dụ: khi bạn cố gắng chia một số cho 0, bạn sẽ nhận được ZerodivisionError. Khi bạn mở một tệp (đọc) không tồn tại, bạn sẽ nhận được filenotfounderror. Hơn nữa, khi bạn cố gắng nhập một mô -đun không tồn tại, bạn sẽ nhận được nhà nhập khẩu. & Nbsp; & nbsp;

Dưới đây là cách Python xử lý các lỗi đã đề cập ở trên:

ZerodivisionError

>>> 2 /0

Traceback (cuộc gọi gần đây nhất cuối cùng):

Ngoại lệ là lỗi xảy ra trong thời gian chạy. Hầu hết, những lỗi này là hợp lý. Ví dụ: khi bạn cố gắng chia một số cho 0, bạn sẽ nhận được ZerodivisionError. Khi bạn mở một tệp (đọc) không tồn tại, bạn sẽ nhận được filenotfounderror. Hơn nữa, khi bạn cố gắng nhập một mô -đun không tồn tại, bạn sẽ nhận được nhà nhập khẩu. & Nbsp; & nbsp;

Dưới đây là cách Python xử lý các lỗi đã đề cập ở trên:

ZerodivisionError

>>> 2 /0

Traceback (cuộc gọi gần đây nhất cuối cùng):

Ngoại lệ là lỗi xảy ra trong thời gian chạy. Hầu hết, những lỗi này là hợp lý. Ví dụ: khi bạn cố gắng chia một số cho 0, bạn sẽ nhận được ZerodivisionError. Khi bạn mở một tệp (đọc) không tồn tại, bạn sẽ nhận được filenotfounderror. Hơn nữa, khi bạn cố gắng nhập một mô -đun không tồn tại, bạn sẽ nhận được nhà nhập khẩu. & Nbsp; & nbsp;

Dưới đây là cách Python xử lý các lỗi đã đề cập ở trên:

ZerodivisionError

>>> 2 /0traceback of that error with details on why the error happened.

Traceback (cuộc gọi gần đây nhất cuối cùng):

  • & nbsp; & nbsp; tệp, dòng 1, trong – You will get this error when an index is not found in a sequence. For instance, accessing the 6th index when the length of the list is only five(5). 
  • ZerodivisionError: Division by Zero – Happens when indentation is not specified correctly.
  • Filenotfounderror – Occurs when the built-in function for a data type has the valid type of arguments, but the arguments have invalid values. 
  • >>> Mở (Stack Stack.txt))– Developers often encounter this error when an input/output operation fails.
  • FilenotFounderRor: [errno 2] Không có tệp hoặc thư mục như vậy: ‘stack.txt – Occurs when numeric calculations fail.
  • Nhà nhập khẩu – Happens when a floating-point calculation fails.
  • >>> Từ bộ sưu tập nhập QWERTY – Occurs when there is assert statement failure.
  • Bước nhập khẩu: Không thể nhập tên ‘QWERTY, & NBSP; – Developers get this error if the result of an arithmetic operation is too large and becomes machine unreadable. 
  • Bất cứ khi nào xảy ra lỗi thời gian chạy, Python tạo ra một đối tượng ngoại lệ. Sau đó, nó tạo ra và in một dấu vết của lỗi đó với chi tiết về lý do tại sao lỗi xảy ra. – Happens when an incorrect type of function or operation is applied to an object.

Dưới đây là những ngoại lệ phổ biến trong Python:Python built-in exceptions. While the Python community offers great support, Python application deployment discussions can be improved. Application Performance Management (APM) like Retrace, is a great tool to deal with Python exceptions. It helps you find all the exceptions thrown and identify its root cause. You can try it for free today!

Bắt các trường hợp ngoại lệ trong Python

Một logic trực tiếp được tuân thủ để bắt các ngoại lệ trong Python. Khi một ngoại lệ xảy ra, trình thông dịch Python dừng quá trình hiện tại. Nó được xử lý bằng cách vượt qua quá trình gọi. Nếu không, chương trình sẽ sụp đổ.

Chẳng hạn, chương trình Python có hàm X gọi hàm Y, lần lượt gọi hàm Z. Nếu một ngoại lệ tồn tại trong hàm z nhưng không được xử lý trong z, ngoại lệ chuyển sang y và sau đó đến X. đơn giản, nó sẽ có hiệu ứng domino. & nbsp;

Một ngoại lệ chưa được xử lý hiển thị một thông báo lỗi và chương trình đột nhiên gặp sự cố. Để tránh một kịch bản như vậy, có hai phương pháp để xử lý các ngoại lệ Python:

  1. Hãy thử - Phương pháp này bắt được các trường hợp ngoại lệ được đưa ra bởi chương trình– This method catches the exceptions raised by the program
  2. Tăng - kích hoạt một ngoại lệ bằng thủ công bằng cách sử dụng các ngoại lệ tùy chỉnh– Triggers an exception manually using custom exceptions

Hãy bắt đầu với câu lệnh thử để xử lý các ngoại lệ. Đặt hoạt động quan trọng có thể tăng một ngoại lệ bên trong mệnh đề thử. Mặt khác, đặt mã xử lý các ngoại lệ trong mệnh đề ngoại trừ.

Các nhà phát triển có thể chọn những hoạt động để thực hiện một khi nó bắt được các ngoại lệ này. Hãy xem mã mẫu dưới đây:

nhập khẩu sys

Danh sách = [‘X, 1e-15, 5]

cho kết quả trong danh sách:

    try:

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

        break

    except:

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; in (

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; in (

        print()

in ("Câu trả lời của", kết quả, "là")

Chương trình có một mảng được gọi là danh sách với ba yếu tố. Tiếp theo, dòng gây ra một ngoại lệ được đặt bên trong khối thử. Nếu không có ngoại lệ, khối ngoại trừ sẽ bỏ qua và luồng logic sẽ tiếp tục cho đến khi phần tử cuối cùng. Tuy nhiên, nếu một ngoại lệ xảy ra, khối ngoại trừ sẽ bắt được nó. & Nbsp;

Đầu ra:

Kết quả là x

Whew! xảy ra.

Vui lòng đầu vào tiếp theo.

Kết quả là 1E-15

Whew! xảy ra.

Vui lòng đầu vào tiếp theo.

Kết quả là 1E-15

Kết quả là 5

Câu trả lời cho 5 là 0,2

Để in tên của ngoại lệ, chúng tôi sử dụng hàm exc_info () bên trong mô -đun SYS. Hai phần tử đầu tiên gây ra các ngoại lệ do một số nguyên có thể được chia với chuỗi và giá trị bằng không. Do đó, nó đã tăng các ngoại lệ của ValueError và ZerodivisionError.

Bắt các trường hợp ngoại lệ cụ thể trong Python

Điều gì sẽ xảy ra nếu bạn muốn đối phó với một ngoại lệ cụ thể? Trong ví dụ trước, nó đã không đề cập đến bất kỳ ngoại lệ cụ thể nào trong khối ngoại trừ. Đó không phải là một thực hành lập trình tốt vì nó sẽ bắt được tất cả các ngoại lệ. & NBSP;

Ngoài ra, nó sẽ xử lý tất cả các ngoại lệ theo cùng một cách, đó là một cách tiếp cận không chính xác. Do đó, tối đa hóa việc sử dụng khối ngoại trừ và chỉ định những ngoại lệ nào cần bắt.

try:

Để thực hiện khái niệm này, chúng ta có thể sử dụng một bộ giá trị để chỉ định nhiều ngoại lệ. Dưới đây là mã giả mẫu:

& nbsp; & nbsp; & nbsp; #do một cái gì đó

   pass

& nbsp; & nbsp; & nbsp;#của bạn

ngoại trừ ngoại lệ_1:

   pass

& nbsp; & nbsp; & nbsp; #handle excen_1 và thực thi câu lệnh khối này

ngoại trừ ngoại lệ_2:

   pass

& nbsp; & nbsp; & nbsp; xử lý ngoại lệ_2 và thực thi câu lệnh khối này

ngoại trừ ngoại lệ_3:

   pass

except:

& nbsp; & nbsp; & nbsp; #handle excen_3 và thực thi câu lệnh khối này

   pass

& nbsp; & nbsp; & nbsp; #handles tất cả các trường hợp ngoại lệ khác

Hãy thử Stackify Code Profiler miễn phí, tiền tố, để viết mã tốt hơn trên máy trạm của bạn. Tiền tố hoạt động với .NET, Java, PHP, Node.js, Ruby và Python.

Tăng ngoại lệ trong Python

Một cách khác để bắt tất cả các ngoại lệ Python khi nó xảy ra trong thời gian chạy là sử dụng từ khóa RAISE. Đó là một quy trình thủ công trong đó bạn có thể tùy chọn chuyển các giá trị ra ngoại lệ để làm rõ lý do tại sao nó được nâng lên.

>>> Nâng cao IndexError

Traceback (cuộc gọi gần đây nhất cuối cùng):

& nbsp; & nbsp; tệp, dòng 1, trong

IndexError

>>> Nâng cao IndexError

Traceback (cuộc gọi gần đây nhất cuối cùng):

& nbsp; & nbsp; tệp, dòng 1, trong

IndexError

try:

>>> Nâng cao Overflowerror (Hoạt động số học quá lớn)

Overflowerror: Hoạt động số học quá lớn

Hãy để có một mã đơn giản để minh họa cách thức tăng từ khóa hoạt động:

& nbsp;

    print(val_e)

Đầu ra:

Kết quả là x

Nó không phải là một con số tích cực!

Nhập một số nguyên dương: 6

Python thử với mệnh đề khác

Khi xử lý các ngoại lệ, có những trường hợp một khối mã nhất định bên trong thử chạy mà không có bất kỳ lỗi nào. Như vậy, sử dụng từ khóa tùy chọn khác với câu lệnh thử.

Đây là mã mẫu:

try:

& nbsp; & nbsp; & nbsp; & nbsp; number = int (input (Hồi Nhập một số: Hồi)))

& nbsp; & nbsp; & nbsp; & nbsp; khẳng định số % 2 == 0

except:

& nbsp; & nbsp; & nbsp; & nbsp; in (Đây là một số lẻ!

else:

& nbsp; & nbsp; & nbsp; & nbsp; in (Đây là một số chẵn!

& nbsp; & nbsp; & nbsp; & nbsp; rem = number % 2

& nbsp; & nbsp; & nbsp; & nbsp; in (phần còn lại là, rem)

Đầu ra:

Nhập một số: 3

Đây là một số lẻ!

Nhập một số: 2

Đây là một con số chẵn!

Phần còn lại là 0

Python thử & nbsp;

Tuyên bố thử trong Python có một khối cuối cùng tùy chọn. Nó có nghĩa là nó thực thi khối bằng mọi cách. Đồng thời, nó phát hành tài nguyên bên ngoài. & NBSP;

Một số ví dụ bao gồm kết nối giữa ứng dụng di động và trung tâm dữ liệu từ xa thông qua mạng phân tán. Tất cả các tài nguyên nên được sạch sẽ khi chương trình dừng lại, cho dù nó có chạy thành công hay không. & NBSP;

Đó là công việc của khối cuối cùng để đảm bảo thực thi. Những hành động như vậy bao gồm đóng một tệp hoặc GUI & nbsp; và ngắt kết nối khỏi mạng.

Kiểm tra ví dụ dưới đây để minh họa cách hoạt động hoạt động:

try:

& nbsp; & nbsp; & nbsp; file = open (

& nbsp; & nbsp; & nbsp;# Điều này thực hiện các hoạt động tệp

cuối cùng:

   f.close()

Hàm f.close () đảm bảo rằng tệp được đóng ngay cả khi một ngoại lệ xảy ra trong quá trình thực hiện chương trình.

Ưu điểm của việc xử lý ngoại lệ và sử dụng đúng APM

Lỗi và lỗi là một phần của mọi hành trình của nhà phát triển. Như đã đề cập ở trên, lỗi và ngoại lệ là khác nhau. Vì vậy, tại sao các nhà phát triển Python nên biết cách bắt các ngoại lệ Python và xử lý ngoại lệ chính? & NBSP;how to catch Python exceptions and master exception handling? 

Các câu trả lời cho điều này không phải là lý thuyết. Thay vào đó, hãy để có một trường hợp sử dụng mẫu.

Ví dụ, bạn có thể xử lý một lượng lớn dữ liệu. Vì vậy, bạn xây dựng một chương trình đọc hàng ngàn tệp trên nhiều thư mục. Không có cách nào mà bạn sẽ không gặp phải lỗi ở đây. Các lỗi có thể có thể bao gồm loại tệp sai hoặc thiếu, định dạng tệp không hợp lệ hoặc xử lý các tiện ích mở rộng tệp khác nhau. & NBSP;

Trên lưu ý đó, việc mở tất cả các tệp là không khả thi và viết một tập lệnh có thể phục vụ cho nó cho phù hợp. Với xử lý ngoại lệ, các nhà phát triển có thể xác định nhiều điều kiện. Chẳng hạn, giải quyết một định dạng không hợp lệ bằng cách thiết lập định dạng chính xác trước và sau đó đọc tệp sau đó. & NBSP;exception handling, developers can define multiple conditions. For instance, resolve an invalid format by establishing the correct format first and then reading the file afterward. 

Một tùy chọn khác là tiếp tục đọc dữ liệu và bỏ qua các tệp đó với định dạng không hợp lệ. & NBSP; Sau đó, tạo một tệp nhật ký có thể xử lý nó sau. & Nbsp; Để giúp bạn với các tệp nhật ký, APM như Retrace là một công cụ tuyệt vời trong việc xử lý nhật ký. Nó có các tính năng ghi nhật ký và những hiểu biết có thể hành động để hỗ trợ bạn với các ứng dụng Python của bạn.Retrace is a great tool in dealing with logs. It has logging features and actionable insights to support you with your Python applications.

  • Thông tin về các Tác giả
  • Bài viết mới nhất

Làm thế nào để tôi có được tất cả các trường hợp ngoại lệ trong Python?

Một cách khác để bắt tất cả các ngoại lệ Python khi nó xảy ra trong thời gian chạy là sử dụng từ khóa RAISE.Đó là một quy trình thủ công trong đó bạn có thể tùy chọn chuyển các giá trị ra ngoại lệ để làm rõ lý do tại sao nó được nâng lên.Nếu xuse the raise keyword. It is a manual process wherein you can optionally pass values to the exception to clarify the reason why it was raised. if x <= 0: raise ValueError(“It is not a positive number!”)

Làm thế nào để bạn bắt được tất cả các trường hợp ngoại lệ?

Xử lý ngoại lệ được sử dụng để xử lý các ngoại lệ.Chúng ta có thể sử dụng thử Catch Block để bảo vệ mã.Khối bắt được sử dụng để bắt tất cả các loại ngoại lệ.Từ khóa, bắt bắt được được sử dụng để bắt các ngoại lệ.Catch block is used to catch all types of exception. The keyword “catch” is used to catch exceptions.

Làm thế nào để bạn bắt được nhiều trường hợp ngoại lệ trong Python?

Bằng cách xử lý nhiều ngoại lệ, một chương trình có thể đáp ứng các ngoại lệ khác nhau mà không cần chấm dứt nó.Trong Python, các khối Except thử có thể được sử dụng để bắt và trả lời một hoặc nhiều trường hợp ngoại lệ.Trong trường hợp một quy trình tăng nhiều hơn một ngoại lệ có thể, tất cả chúng đều có thể được xử lý bằng một mệnh đề ngoại trừ duy nhất.try-except blocks can be used to catch and respond to one or multiple exceptions. In cases where a process raises more than one possible exception, they can all be handled using a single except clause.

Ngoại lệ có bắt được tất cả các trường hợp ngoại lệ không?

Vì ngoại lệ là lớp cơ sở của tất cả các trường hợp ngoại lệ, nó sẽ bắt được bất kỳ ngoại lệ nào.it will catch any exception.