Hướng dẫn how do you except all errors in python? - làm thế nào để bạn loại trừ tất cả các lỗi trong python?

Trước hết, có những ngoại lệ mà bạn muốn chúng phá vỡ mã của bạn (vì khi lỗi này xảy ra, mã của bạn sẽ không hoạt động!) Và các ngoại lệ bạn muốn nắm bắt âm thầm/mượt mà. Hãy thử phân biệt chúng. Bạn có thể không muốn nắm bắt tất cả các trường hợp ngoại lệ!

Thứ hai, thay vì nắm bắt mọi thứ, bạn có thể dành thời gian và trải qua các bản ghi của quy trình của bạn. Giả sử bạn đang nhận được một ngoại lệ khác/bên thứ ba, ví dụ từ nhà cung cấp dịch vụ đám mây như GCP. Trong nhật ký, bạn có thể tìm thấy ngoại lệ bạn đang nhận được. Sau đó, bạn có thể làm một cái gì đó như thế này:

from google.api_core.exceptions import ServiceUnavailable, RetryError

for i in range(10):
   try:
      print("do something")

   except ValueError:
      print("I know this might happen for now at times! skipping this and continuing with my loop"

   except ServiceUnavailable:
      print("our connection to a service (e.g. logging) of gcp has failed")
      print("initializing the cloud logger again and try continuing ...") 

   except RetryError:
      print("gcp connection retry failed. breaking the loop. try again later!)
      break

Đối với phần còn lại (lỗi có thể hoặc không thể xảy ra), tôi sẽ rời khỏi phòng để mã của mình bị sập nếu tôi có một ngoại lệ bất ngờ! Bằng cách này, tôi có thể hiểu những gì đang xảy ra và cải thiện mã của tôi bằng cách nắm bắt các trường hợp cạnh.

Nếu bạn muốn điều này không bao giờ gặp sự cố vì một số lý do, ví dụ nếu đó là mã được nhúng trong phần cứng từ xa mà bạn không thể dễ dàng truy cập, bạn có thể thêm một người bắt ngoại lệ chung ở cuối:

except Exception as e:
   print(f"something went wrong! - {e}")

Bạn cũng có thể xem xét phân cấp ngoại lệ Python 3 ở đây. Sự khác biệt giữa ExceptionBaseException là, Exception sẽ không bắt được

except Exception as e:
   print(f"something went wrong! - {e}")
1,
except Exception as e:
   print(f"something went wrong! - {e}")
2 hoặc
except Exception as e:
   print(f"something went wrong! - {e}")
3

Trong bài viết này, chúng tôi sẽ thảo luận về cách bắt tất cả các ngoại lệ trong Python bằng cách sử dụng thử, ngoại trừ các câu lệnh với sự trợ giúp của các ví dụ thích hợp. Nhưng trước khi cho phép, hãy xem các loại lỗi khác nhau trong Python.

Nhìn chung có hai loại lỗi trong Python, tức là lỗi cú pháp và ngoại lệ. Hãy cùng xem sự khác biệt giữa họ.

Sự khác biệt giữa lỗi cú pháp và ngoại lệ

Lỗi cú pháp: Như tên cho thấy lỗi này là do cú pháp sai trong mã. Nó dẫn đến việc chấm dứt chương trình. As the name suggests this error is caused by the wrong syntax in the code. It leads to the termination of the program.

Ví dụ: Lỗi cú pháp trong Python

Python3

except Exception as e:
   print(f"something went wrong! - {e}")
4
except Exception as e:
   print(f"something went wrong! - {e}")
5
except Exception as e:
   print(f"something went wrong! - {e}")
6

except Exception as e:
   print(f"something went wrong! - {e}")
7
except Exception as e:
   print(f"something went wrong! - {e}")
8
except Exception as e:
   print(f"something went wrong! - {e}")
9
SyntaxError: invalid syntax
0

SyntaxError: invalid syntax
1
SyntaxError: invalid syntax
2
SyntaxError: invalid syntax
3
SyntaxError: invalid syntax
0

Output:

SyntaxError: invalid syntax

Các trường hợp ngoại lệ: Các ngoại lệ được nêu ra khi chương trình đúng về mặt cú pháp, nhưng mã dẫn đến lỗi. Lỗi này không ngăn chặn việc thực hiện chương trình, tuy nhiên, nó thay đổi luồng thông thường của chương trình. Exceptions are raised when the program is syntactically correct, but the code resulted in an error. This error does not stop the execution of the program, however, it changes the normal flow of the program.

Ví dụ: Ngoại lệ trong Python

Python3

SyntaxError: invalid syntax
5
except Exception as e:
   print(f"something went wrong! - {e}")
5
except Exception as e:
   print(f"something went wrong! - {e}")
6

SyntaxError: invalid syntax
8
except Exception as e:
   print(f"something went wrong! - {e}")
5
SyntaxError: invalid syntax
5
ZeroDivisionError: division by zero
1
ZeroDivisionError: division by zero
2

SyntaxError: invalid syntax
1
ZeroDivisionError: division by zero
4

Output:

ZeroDivisionError: division by zero

Hãy thử và ngoại trừ tuyên bố - Bắt tất cả các ngoại lệ

Hãy thử và ngoại trừ các câu lệnh được sử dụng để bắt và xử lý các ngoại lệ trong Python. Các tuyên bố có thể nêu ra các ngoại lệ được giữ bên trong mệnh đề thử và các câu lệnh xử lý ngoại lệ được viết bên trong ngoại trừ mệnh đề. are used to catch and handle exceptions in Python. Statements that can raise exceptions are kept inside the try clause and the statements that handle the exception are written inside except clause.

Ví dụ: Python bắt tất cả các trường hợp ngoại lệ

Python3

SyntaxError: invalid syntax
8
except Exception as e:
   print(f"something went wrong! - {e}")
5
ZeroDivisionError: division by zero
7
ZeroDivisionError: division by zero
8
ZeroDivisionError: division by zero
9
Second element = 2
An error occurred
0
ZeroDivisionError: division by zero
9
Second element = 2
An error occurred
2
Second element = 2
An error occurred
3

Second element = 2
An error occurred
4
Second element = 2
An error occurred
5

Second element = 2
An error occurred
6
SyntaxError: invalid syntax
1
SyntaxError: invalid syntax
2
Second element = 2
An error occurred
9
try:
   # statement(s)
except IndexError:
   # statement(s)
except ValueError:
   # statement(s)
0
try:
   # statement(s)
except IndexError:
   # statement(s)
except ValueError:
   # statement(s)
1
ZeroDivisionError: division by zero
8
try:
   # statement(s)
except IndexError:
   # statement(s)
except ValueError:
   # statement(s)
3

Second element = 2
An error occurred
6
SyntaxError: invalid syntax
1
SyntaxError: invalid syntax
22____57
try:
   # statement(s)
except IndexError:
   # statement(s)
except ValueError:
   # statement(s)
0
try:
   # statement(s)
except IndexError:
   # statement(s)
except ValueError:
   # statement(s)
1
Second element = 2
An error occurred
2
try:
   # statement(s)
except IndexError:
   # statement(s)
except ValueError:
   # statement(s)
3

ZeroDivisionError Occurred and Handled
2
Second element = 2
An error occurred
5

Second element = 2
An error occurred
6
SyntaxError: invalid syntax
1
SyntaxError: invalid syntax
22
ZeroDivisionError Occurred and Handled
7
SyntaxError: invalid syntax
0

Đầu ra

Second element = 2
An error occurred

Trong ví dụ trên, các câu lệnh có thể gây ra lỗi được đặt bên trong câu lệnh thử (câu lệnh in thứ hai trong trường hợp của chúng tôi). Câu lệnh in thứ hai cố gắng truy cập vào phần tử thứ tư của danh sách không có và điều này ném một ngoại lệ. Ngoại lệ này sau đó bị bắt bởi tuyên bố ngoại trừ. Không chỉ định bất kỳ loại ngoại lệ nào, tất cả các ngoại lệ gây ra trong khối thử sẽ bị chặn bởi khối ngoại trừ. Chúng tôi cũng có thể bắt được một ngoại lệ cụ thể. Hãy cùng xem cách làm điều đó.

Nắm bắt ngoại lệ cụ thể

Một câu lệnh thử có thể có nhiều hơn một điều khoản ngoại trừ mệnh đề, để chỉ định trình xử lý cho các ngoại lệ khác nhau. Xin lưu ý rằng nhiều nhất là một người xử lý sẽ được thực thi. Ví dụ: chúng ta có thể thêm IndexError vào mã trên. Cú pháp chung để thêm các ngoại lệ cụ thể là -

try:
   # statement(s)
except IndexError:
   # statement(s)
except ValueError:
   # statement(s)

Ví dụ: Bắt ngoại lệ cụ thể trong Python

Python3

ZeroDivisionError Occurred and Handled
9
NameError Occurred and Handled
0

Second element = 2
An error occurred
6
except Exception as e:
   print(f"something went wrong! - {e}")
7
NameError Occurred and Handled
3
NameError Occurred and Handled
4
Second element = 2
An error occurred
5

NameError Occurred and Handled
6
NameError Occurred and Handled
77____15
NameError Occurred and Handled
9
ZeroDivisionError: division by zero
1Exception1Exception2
Second element = 2
An error occurred
2
SyntaxError: invalid syntax
020

Second element = 2
An error occurred
6
SyntaxError: invalid syntax
1
SyntaxError: invalid syntax
2Exception8Exception9

Second element = 2
An error occurred
4
Second element = 2
An error occurred
5

Second element = 2
An error occurred
6BaseException3
Second element = 2
An error occurred
2
SyntaxError: invalid syntax
0

Second element = 2
An error occurred
6BaseException3BaseException8
SyntaxError: invalid syntax
0

ZeroDivisionError Occurred and Handled
2
except Exception as e:
   print(f"something went wrong! - {e}")
01

Second element = 2
An error occurred
6
SyntaxError: invalid syntax
1
SyntaxError: invalid syntax
2
except Exception as e:
   print(f"something went wrong! - {e}")
05
SyntaxError: invalid syntax
0

ZeroDivisionError Occurred and Handled
2
except Exception as e:
   print(f"something went wrong! - {e}")
08

Second element = 2
An error occurred
6
SyntaxError: invalid syntax
1
SyntaxError: invalid syntax
2
except Exception as e:
   print(f"something went wrong! - {e}")
12
SyntaxError: invalid syntax
0

Đầu ra

ZeroDivisionError Occurred and Handled

Trong ví dụ trên, các câu lệnh có thể gây ra lỗi được đặt bên trong câu lệnh thử (câu lệnh in thứ hai trong trường hợp của chúng tôi). Câu lệnh in thứ hai cố gắng truy cập vào phần tử thứ tư của danh sách không có và điều này ném một ngoại lệ. Ngoại lệ này sau đó bị bắt bởi tuyên bố ngoại trừ. Không chỉ định bất kỳ loại ngoại lệ nào, tất cả các ngoại lệ gây ra trong khối thử sẽ bị chặn bởi khối ngoại trừ. Chúng tôi cũng có thể bắt được một ngoại lệ cụ thể. Hãy cùng xem cách làm điều đó.

NameError Occurred and Handled

Nắm bắt ngoại lệ cụ thể

Một câu lệnh thử có thể có nhiều hơn một điều khoản ngoại trừ mệnh đề, để chỉ định trình xử lý cho các ngoại lệ khác nhau. Xin lưu ý rằng nhiều nhất là một người xử lý sẽ được thực thi. Ví dụ: chúng ta có thể thêm IndexError vào mã trên. Cú pháp chung để thêm các ngoại lệ cụ thể là -For more information, refer to our Python Exception Handling Tutorial.


Làm cách nào để bỏ qua tất cả các lỗi trong Python?

Sử dụng thử ngoại trừ để bắt được ngoại lệ ZerodivisionError và bỏ qua nó. Trong mã trên, chúng tôi bắt được ngoại lệ ZerodivisionError và sử dụng Pass để bỏ qua nó. Vì vậy, khi ngoại lệ này xảy ra, sẽ không có gì được ném và chương trình sẽ tiếp tục chạy bằng cách bỏ qua số 0. block to catch the ZeroDivisionError exception and ignore it. In the above code, we catch the ZeroDivisionError exception and use pass to ignore it. So, when this exception happens, nothing will be thrown and the program will just keep running by ignoring the zero number.

Làm thế nào để bạn sử dụng một lỗi ngoại trừ trong Python?

Trong Python, các trường hợp ngoại lệ có thể được xử lý bằng cách sử dụng câu lệnh thử.Hoạt động quan trọng có thể tăng một ngoại lệ được đặt bên trong mệnh đề thử.Mã xử lý các ngoại lệ được viết trong mệnh đề ngoại trừ.Do đó, chúng tôi có thể chọn những hoạt động để thực hiện một khi chúng tôi đã bắt được ngoại lệ.The code that handles the exceptions is written in the except clause. We can thus choose what operations to perform once we have caught the exception.

Làm thế nào để bạn ngoại trừ nhiều lỗi 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.

Làm cách nào để cho phép lỗi trong Python?

Là một nhà phát triển Python, bạn có thể chọn ném một ngoại lệ nếu xảy ra điều kiện.Để ném (hoặc nâng cao) một ngoại lệ, hãy sử dụng từ khóa nâng cao.use the raise keyword.