Python 3 – Xử lý ngoại lệ, Python cung cấp hai tính năng rất quan trọng để xử lý bất kỳ lỗi không mong muốn nào trong các chương trình Python của bạn và thêm khả năng gỡ lỗi trong đó –

Bạn đang xem: python 3 hãy thử ngoại trừ
< div>

Python 3 – Xử lý ngoại lệ

Quảng cáo

Python cung cấp hai tính năng rất quan trọng để xử lý bất kỳ lỗi không mong muốn nào trong các chương trình Python của bạn và thêm khả năng gỡ lỗi trong đó –

  • Xử lý Ngoại lệ – Điều này sẽ được đề cập trong hướng dẫn này. Dưới đây là danh sách các Ngoại lệ tiêu chuẩn có sẵn trong Python – Ngoại lệ Tiêu chuẩn .

  • Khẳng định – Điều này sẽ được đề cập trong hướng dẫn Khẳng định trong Python 3 .

Ngoại lệ tiêu chuẩn

Đây là danh sách các Ngoại lệ Chuẩn có sẵn trong Python. –

Sr.No.
Tên ngoại lệ & amp; Sự mô tả

1

Ngoại lệ

Lớp cơ sở cho tất cả các trường hợp ngoại lệ

2

StopIteration

Được nâng lên khi phương thức next () của một trình lặp không trỏ đến bất kỳ đối tượng nào.

3

System Exit

Được phát triển bởi hàm sys.exit ().

4

StandardError

Lớp cơ sở cho tất cả các ngoại lệ được tích hợp sẵn ngoại trừ StopIteration và SystemExit.

5

ArithmeticError

Lớp cơ sở cho tất cả các lỗi xảy ra khi tính toán số.

6

OverflowError

Tăng lên khi một phép tính vượt quá giới hạn tối đa cho một loại số.

7

FloatingPointError

Tăng lên khi một phép tính dấu phẩy động không thành công.

số 8

ZeroDivisonError

Tăng lên khi phép chia hoặc môđun cho 0 diễn ra đối với tất cả các loại số.

9

AssertionError

Nâng cao trong trường hợp không thực hiện được Tuyên bố khẳng định.

10

AttributeError

Được nâng lên trong trường hợp không thể tham chiếu hoặc gán thuộc tính.

11

EOFError

Tăng lên khi không có dữ liệu đầu vào nào từ hàm raw_input () hoặc input () và đến cuối tệp.

12

ImportError

Tăng lên khi một câu lệnh nhập không thành công.

13

KeyboardInterrupt

Tăng lên khi người dùng làm gián đoạn việc thực thi chương trình, thường bằng cách nhấn Ctrl & amp; plus; c.

14

LookupError

Lớp cơ sở cho tất cả các lỗi tra cứu.

15

IndexError

Tăng lên khi không tìm thấy chỉ mục trong một chuỗi.

16

KeyError

Tăng lên khi không tìm thấy khóa được chỉ định trong từ điển.

17

NameError

Tăng lên khi không tìm thấy số nhận dạng trong không gian tên cục bộ hoặc toàn cầu.

18

UnboundLocalError

Tăng lên khi cố gắng truy cập một biến cục bộ trong một hàm hoặc phương thức nhưng không có giá trị nào được gán cho nó.

19

Lỗi Môi trường

Lớp cơ sở cho tất cả các ngoại lệ xảy ra bên ngoài môi trường Python.

20

IOError

Tăng lên khi thao tác nhập / xuất không thành công, chẳng hạn như câu lệnh in hoặc hàm open () khi cố gắng mở một tệp không tồn tại.

21

OSError

Tăng do các lỗi liên quan đến hệ điều hành.

22

SyntaxError

Tăng lên khi có lỗi trong cú pháp Python.

23

Lỗi thụt đầu dòng

Tăng lên khi thụt lề không được chỉ định đúng cách.

24

Lỗi Hệ thống

Tăng lên khi trình thông dịch tìm thấy sự cố nội bộ, nhưng khi gặp lỗi này, trình thông dịch Python không thoát.

25

System Exit

Tăng lên khi trình thông dịch Python bị thoát bằng cách sử dụng hàm sys.exit (). Nếu mã không được xử lý, trình thông dịch sẽ thoát.

26

TypeError

Tăng lên khi thực hiện một thao tác hoặc chức năng không hợp lệ đối với loại dữ liệu được chỉ định.

27

ValueError

Tăng lên khi hàm tích hợp cho một kiểu dữ liệu có kiểu đối số hợp lệ, nhưng các đối số có giá trị không hợp lệ được chỉ định.

28

RuntimeError

Tăng lên khi lỗi đã tạo không thuộc bất kỳ danh mục nào.

29

NotImplementedError

Được nâng lên khi một phương thức trừu tượng cần được triển khai trong một lớp kế thừa không thực sự được triển khai.

Các câu khẳng định trong Python

Xác nhận là một biện pháp kiểm tra sự tỉnh táo mà bạn có thể bật hoặc tắt khi hoàn tất quá trình kiểm tra chương trình.

  • Cách dễ nhất để nghĩ về một khẳng định là ví nó với một câu lệnh raise-if (hoặc chính xác hơn, là một câu lệnh raise-if-not). Một biểu thức được kiểm tra và nếu kết quả là sai, một ngoại lệ sẽ được đưa ra.

  • Các khẳng định được thực hiện bởi câu lệnh khẳng định, từ khóa mới nhất của Python, được giới thiệu trong phiên bản 1.5.

  • Các lập trình viên thường đặt các xác nhận ở đầu một hàm để kiểm tra đầu vào hợp lệ và sau một lệnh gọi hàm để kiểm tra đầu ra hợp lệ.

Xem Thêm  Xóa phần tử khỏi DANH SÁCH Python [clear, pop, remove, del] - xóa phần tử khỏi danh sách

Tuyên bố khẳng định

Khi gặp câu lệnh khẳng định, Python sẽ đánh giá biểu thức đi kèm, điều này hy vọng là đúng. Nếu biểu thức là sai, Python sẽ đưa ra một ngoại lệ.

Cú pháp để xác nhận là –

khẳng định Biểu thức [, Đối số]

Nếu xác nhận không thành công, Python sử dụng ArgumentExpression làm đối số cho AssertionError. Các ngoại lệ của AssertionError có thể được bắt và xử lý giống như bất kỳ ngoại lệ nào khác, bằng cách sử dụng câu lệnh try-exception. Nếu chúng không được xử lý, chúng sẽ chấm dứt chương trình và tạo ra một bản ghi lại.

Ví dụ

Đây là một chức năng chuyển đổi nhiệt độ nhất định từ độ Kelvin sang độ F. Vì 0 ° K càng lạnh càng lạnh, nên hàm sẽ tắt nếu thấy nhiệt độ âm –

#! / usr / bin / python3

def KelvinToFahrenheit (Nhiệt độ):
   khẳng định (Nhiệt độ & gt; = 0), "Lạnh hơn độ không tuyệt đối!"
   return ((Nhiệt độ-273) * 1.8) +32

in (KelvinToFahrenheit (273))
print (int (KelvinToFahrenheit (505.78)))
in (KelvinToFahrenheit (-5))

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau –

32.0
451
Traceback (cuộc gọi gần đây nhất cuối cùng):
Tệp "test.py", dòng 9, trong & lt; mô-đun & gt;
in KelvinToFahrenheit (-5)
Tệp "test.py", dòng 4, trong KelvinToFahrenheit
khẳng định (Nhiệt độ & gt; = 0), "Lạnh hơn độ không tuyệt đối!"
AssertionError: Lạnh hơn 0 tuyệt đối!

Ngoại lệ là gì?

Ngoại lệ là một sự kiện, xảy ra trong quá trình thực thi chương trình làm gián đoạn luồng hướng dẫn bình thường của chương trình. Nói chung, khi một tập lệnh Python gặp một tình huống mà nó không thể đối phó, nó sẽ tạo ra một ngoại lệ. Một ngoại lệ là một đối tượng Python đại diện cho một lỗi.

Khi một tập lệnh Python tạo ra một ngoại lệ, nó phải xử lý ngoại lệ đó ngay lập tức, nếu không, nó sẽ kết thúc và thoát.

Xử lý một ngoại lệ

Nếu bạn có một số mã có thể tạo ra một ngoại lệ, bạn có thể bảo vệ chương trình của mình bằng cách đặt mã đáng ngờ vào một khối thử: . Sau lần thử: khối, hãy bao gồm câu lệnh ngoại trừ: , theo sau là một khối mã xử lý vấn đề một cách tinh tế nhất có thể.

Cú pháp

Đây là cú pháp đơn giản của các khối –

thử:
   Bạn thực hiện các thao tác của mình tại đây
   ......................
ngoại trừ ExceptionI:
   Nếu có ExceptionI, thì hãy thực thi khối này.
ngoại trừ ExceptionII:
   Nếu có ExceptionII, thì hãy thực thi khối này.
   ......................
khác:
   Nếu không có ngoại lệ thì thực thi khối này.

Dưới đây là một số điểm quan trọng về cú pháp được đề cập ở trên –

  • Một câu lệnh try duy nhất có thể có nhiều câu lệnh ngoại trừ. Điều này hữu ích khi khối try chứa các câu lệnh có thể tạo ra các loại ngoại lệ khác nhau.

  • Bạn cũng có thể cung cấp một mệnh đề ngoại trừ chung để xử lý mọi trường hợp ngoại lệ.

  • Sau (các) mệnh đề ngoại trừ, bạn có thể thêm một mệnh đề khác. Mã trong khối else thực thi nếu mã trong khối try: không tạo ra ngoại lệ.

  • Khối else là một nơi tốt cho mã không cần sự bảo vệ của try: block.

Ví dụ

Ví dụ này mở một tệp, ghi nội dung vào tệp và hiển thị một cách duyên dáng vì không có vấn đề gì cả –

#! / usr / bin / python3

thử:
   fh = open ("testfile", "w")
   fh.write ("Đây là tệp thử nghiệm của tôi để xử lý ngoại lệ !!")
ngoại trừ IOError:
   print ("Lỗi: không thể tìm thấy tệp hoặc đọc dữ liệu")
khác:
   print ("Nội dung đã viết trong tệp thành công")
   fh.close ()

Điều này tạo ra kết quả sau –

Nội dung đã viết trong tệp thành công

Ví dụ

Ví dụ này cố gắng mở một tệp mà bạn không có quyền ghi, vì vậy nó tạo ra một ngoại lệ –

#! / usr / bin / python3

thử:
   fh = open ("testfile", "r")
   fh.write ("Đây là tệp thử nghiệm của tôi để xử lý ngoại lệ !!")
ngoại trừ IOError:
   print ("Lỗi: không thể tìm thấy tệp hoặc đọc dữ liệu")
khác:
   print ("Nội dung đã viết trong tệp thành công")

Điều này tạo ra kết quả sau –

Lỗi: không thể tìm thấy tệp hoặc đọc dữ liệu

Điều khoản ngoại trừ không có ngoại lệ

Bạn cũng có thể sử dụng câu lệnh ngoại trừ không có ngoại lệ nào được định nghĩa như sau –

thử:
   Bạn thực hiện các thao tác của mình tại đây
   ......................
ngoại trừ:
   Nếu có bất kỳ ngoại lệ nào, thì hãy thực thi khối này.
   ......................
khác:
   Nếu không có ngoại lệ thì thực thi khối này.

Loại câu lệnh thử ngoại trừ này nắm bắt được tất cả các trường hợp ngoại lệ xảy ra. Mặc dù vậy, việc sử dụng loại câu lệnh thử ngoại trừ này không được coi là một phương pháp lập trình tốt vì nó nắm bắt được tất cả các trường hợp ngoại lệ nhưng không giúp lập trình viên xác định được nguyên nhân gốc rễ của sự cố có thể xảy ra.

Xem Thêm  Liên kết dữ liệu hai chiều góc với các ví dụ - liên kết dữ liệu hai chiều trong ví dụ anglejs

Điều khoản ngoại trừ có nhiều trường hợp ngoại lệ

Bạn cũng có thể sử dụng cùng một câu lệnh để xử lý nhiều trường hợp ngoại lệ như sau –

thử:
   Bạn thực hiện các thao tác của mình tại đây
   ......................
ngoại trừ (Exception1 [, Exception2 [, ... ExceptionN]]]):
   Nếu có bất kỳ ngoại lệ nào từ danh sách ngoại lệ đã cho,
   sau đó thực thi khối này.
   ......................
khác:
   Nếu không có ngoại lệ thì thực thi khối này.

Mệnh đề try-last

Bạn có thể sử dụng khối cuối cùng: cùng với khối thử: . Khối cuối cùng: là nơi để đặt bất kỳ mã nào phải thực thi, cho dù khối thử có nêu ra ngoại lệ hay không. Cú pháp của câu lệnh try-last là thế này –

thử:
   Bạn thực hiện các thao tác của mình ở đây;
   ......................
   Do bất kỳ ngoại lệ nào, điều này có thể bị bỏ qua.
cuối cùng:
   Điều này sẽ luôn được thực hiện.
   ......................

Lưu ý – Bạn có thể cung cấp (các) mệnh đề ngoại trừ hoặc mệnh đề cuối cùng, nhưng không cung cấp cả hai. Bạn cũng không thể sử dụng mệnh đề cùng với mệnh đề cuối cùng.

Ví dụ

#! / usr / bin / python3

thử:
   fh = open ("testfile", "w")
   fh.write ("Đây là tệp thử nghiệm của tôi để xử lý ngoại lệ !!")
cuối cùng:
   print ("Lỗi: không thể tìm thấy tệp hoặc đọc dữ liệu")
   fh.close ()

Nếu bạn không có quyền mở tệp ở chế độ ghi, thì điều này sẽ tạo ra kết quả sau –

Lỗi: không thể tìm thấy tệp hoặc đọc dữ liệu

Ví dụ tương tự có thể được viết rõ ràng hơn như sau –

#! / usr / bin / python3

thử:
   fh = open ("testfile", "w")
   thử:
      fh.write ("Đây là tệp thử nghiệm của tôi để xử lý ngoại lệ !!")
   cuối cùng:
      print ("Sắp đóng tệp")
      fh.close ()
ngoại trừ IOError:
   print ("Lỗi: không thể tìm thấy tệp hoặc đọc dữ liệu")

Điều này tạo ra kết quả sau –

Sắp đóng tệp

Khi một ngoại lệ được ném vào khối, việc thực thi ngay lập tức được chuyển đến khối. Sau khi tất cả các câu lệnh trong khối được thực thi, ngoại lệ lại được đưa ra và được xử lý trong các câu lệnh nếu có trong lớp cao hơn tiếp theo của câu lệnh.

Lập luận về một ngoại lệ

Một ngoại lệ có thể có, là một giá trị cung cấp thêm thông tin về sự cố. Nội dung của đối số khác nhau tùy theo ngoại lệ. Bạn nắm bắt đối số của một ngoại lệ bằng cách cung cấp một biến trong mệnh đề ngoại trừ như sau –

thử:
   Bạn thực hiện các thao tác của mình tại đây
   ......................
ngoại trừ ExceptionType as Argument:
   Bạn có thể in giá trị của Đối số tại đây ...

Nếu bạn viết mã để xử lý một ngoại lệ, bạn có thể có một biến theo sau tên của ngoại lệ trong câu lệnh Ngoại trừ. Nếu bạn đang mắc kẹt nhiều ngoại lệ, bạn có thể đặt một biến theo sau bộ ngoại lệ.

Biến này nhận giá trị của ngoại lệ chủ yếu chứa nguyên nhân của ngoại lệ. Biến có thể nhận một giá trị duy nhất hoặc nhiều giá trị dưới dạng một bộ giá trị. Bộ mã này thường chứa chuỗi lỗi, số lỗi và vị trí lỗi.

Ví dụ

Sau đây là một ví dụ cho một ngoại lệ duy nhất –

#! / usr / bin / python3

# Định nghĩa một chức năng ở đây.
def temp_convert (var):
   thử:
      trả về int (var)
   ngoại trừ ValueError làm đối số:
      print ("Đối số không chứa số \ n", Đối số)

# Gọi hàm trên tại đây.
temp_convert ("xyz")

Điều này tạo ra kết quả sau –

Đối số không chứa số
ký tự không hợp lệ cho int () với cơ số 10: 'xyz'

Nâng cao một ngoại lệ

Bạn có thể tăng các ngoại lệ theo một số cách bằng cách sử dụng câu lệnh tăng. Cú pháp chung cho câu lệnh raise như sau –

Cú pháp

tăng [Exception [, args [, traceback]]]

Đây, là loại ngoại lệ (ví dụ: NameError) và là một giá trị cho đối số ngoại lệ. Đối số là tùy chọn; nếu không được cung cấp, đối số ngoại lệ là Không.

Đối số cuối cùng, theo dõi lại, cũng là tùy chọn (và hiếm khi được sử dụng trong thực tế) và nếu có, là đối tượng theo dõi được sử dụng cho trường hợp ngoại lệ.

Ví dụ

Một ngoại lệ có thể là một chuỗi, một lớp hoặc một đối tượng. Hầu hết các ngoại lệ mà lõi Python nêu ra là các lớp, với một đối số là một thể hiện của lớp. Việc xác định các ngoại lệ mới khá dễ dàng và có thể thực hiện như sau –

def functionName (level):
   nếu cấp & lt; 1:
      nâng cao Ngoại lệ (cấp độ)
      # Đoạn mã dưới đây cho điều này sẽ không được thực thi
      # nếu chúng tôi nâng cao ngoại lệ
   mức trả lại

Lưu ý – Để bắt một ngoại lệ, mệnh đề “ngoại trừ” phải tham chiếu đến cùng một ngoại lệ được đưa ra dưới dạng một đối tượng lớp hoặc một chuỗi đơn giản. Ví dụ, để nắm bắt được ngoại lệ ở trên, chúng ta phải viết mệnh đề ngoại trừ như sau –

thử:
   Logic kinh doanh tại đây ...
ngoại trừ Exception as e:
   Xử lý ngoại lệ ở đây bằng cách sử dụng e.args ...
khác:
   Phần còn lại của mã ở đây ...

Ví dụ sau minh họa việc sử dụng nêu ra một ngoại lệ –

#! / usr / bin / python3

def functionName (level):
   nếu cấp & lt; 1:
      nâng cao Ngoại lệ (cấp độ)
      # Đoạn mã dưới đây cho điều này sẽ không được thực thi
      # nếu chúng tôi nâng cao ngoại lệ
   mức trả lại

thử:
   l = functionName (-10)
   print ("level =", l)
ngoại trừ Exception as e:
   print ("lỗi trong đối số cấp", e.args [0])

Điều này sẽ tạo ra kết quả sau

lỗi trong đối số cấp -10

Ngoại lệ do người dùng xác định

Python cũng cho phép bạn tạo các ngoại lệ của riêng mình bằng cách dẫn xuất các lớp từ các ngoại lệ tích hợp tiêu chuẩn.

Xem Thêm  Làm cách nào để thay đổi kích thước hình ảnh trong HTML? - html điều chỉnh kích thước hình ảnh

Đây là một ví dụ liên quan đến. Ở đây, một lớp được tạo ra được phân lớp từ. Điều này rất hữu ích khi bạn cần hiển thị thông tin cụ thể hơn khi phát hiện một ngoại lệ.

Trong khối try, ngoại lệ do người dùng xác định sẽ được nâng lên và mắc vào khối ngoại trừ. Biến e được sử dụng để tạo một thể hiện của lớp.

Lớp Networkerror (RuntimeError):
   def __init __ (self, arg):
      self.args = arg

Vì vậy, khi bạn đã xác định lớp ở trên, bạn có thể nâng cao ngoại lệ như sau –

thử:
   nâng Networkerror ("Tên máy chủ không hợp lệ")
ngoại trừ Networkerror, e:
   in e.args

Quảng cáo


Xem thêm những thông tin liên quan đến chủ đề python 3 thử ngoại trừ

what’s wrong with python’s blank except:? (beginner – intermediate) anthony explains #008

  • Tác giả: anthonywritescode
  • Ngày đăng: 2020-04-19
  • Đánh giá: 4 ⭐ ( 3411 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: the dreaded “E722 do not use bare ‘except'”! today we explain the various ways to “catch all exceptions” as well as some recommendations on how to properly fix this problem!

    playlist: https://www.youtube.com/playlist?list=PLWBKAf81pmOaP9naRiNAqug6EBnkPakvY

    ==========

    twitch: https://twitch.tv/anthonywritescode
    dicsord: https://discord.gg/xDKGPaW
    twitter: https://twitter.com/codewithanthony
    github: https://github.com/asottile
    stream github: https://github.com/anthonywritescode

    I won’t ask for subscriptions / likes / comments in videos but it really helps the channel. If you have any suggestions or things you’d like to see please comment below!

PYTHON THỬ NGOẠI TRỪ BẰNG PYTHON

  • Tác giả: vi.ichlese.at
  • Đánh giá: 5 ⭐ ( 1205 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Thử Ngoại trừ trong Python cho phép bạn bắt lỗi và làm điều gì đó hợp lý hơn. Các ngoại lệ thuận tiện cho việc xử lý lỗi trong chương trình.

Trong khi Thử ngoại trừ trong Python 3

  • Tác giả: vi.waldorf-am-see.org
  • Đánh giá: 3 ⭐ ( 6413 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tôi đã vật lộn với điều này trong vài giờ, tôi đã tìm ra nó. Tất nhiên bây giờ điều đó có vẻ quá rõ ràng đối với tôi, nhưng có lẽ một ngày nào đó người khác sẽ gặp khó khăn ở chỗ cũ, vì vậy tôi nghĩ tôi sẽ hỏi-và-

Ngoại lệ Python

  • Tác giả: vi.tutorialcup.com
  • Đánh giá: 3 ⭐ ( 1266 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong Python lỗi Exception và Syntax là khác nhau. Ngoại lệ xảy ra khi mã đúng về mặt cú pháp nhưng có lỗi trong chính mã.

Python ngoại trừ TypeError khi gọi một phiên bản không thể đối chiếu

  • Tác giả: vi.ourschoolpreschool.org
  • Đánh giá: 5 ⭐ ( 8163 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tôi có một hàm chấp nhận một thể hiện của một lớp hoặc một đối tượng lớp làm tham số. Tùy thuộc vào thiết bị ướt mà nó có một cá thể hoặc chỉ cho chính lớp đó, nó sẽ thực hiện các nhiệm vụ khác nhau …

Python thử… ngoại trừ dấu phẩy so với ‘as’ trong ngoại trừ

  • Tác giả: vie.thercb.org
  • Đánh giá: 4 ⭐ ( 4198 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Sự khác biệt giữa ‘,’ và ‘as’ trong câu lệnh ngoại trừ là gì, ví dụ: try: vượt qua ngoại trừ Ngoại lệ, ngoại lệ: vượt qua và: thử: vượt qua ngoại trừ Ngoại lệ là ngoại lệ: vượt qua là thứ hai

thử và ngoại trừ bằng Python

  • Tác giả: vn.wsxdn.com
  • Đánh giá: 5 ⭐ ( 6480 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

By ads_php