Hướng dẫn này giải thích Xử lý ngoại lệ trong Python bằng cách sử dụng khối Thử ngoại trừ với sự trợ giúp của các ví dụ lập trình
Hai loại lỗi có thể khiến chương trình Python dừng đột ngột. e. Lỗi cú pháp và ngoại lệ. Trong hướng dẫn này, chúng ta sẽ thảo luận về loại lỗi thứ hai [Ngoại lệ] trong một số chủ đề quan trọng
Chúng tôi sẽ được hưởng lợi rất nhiều từ việc xử lý các ngoại lệ trong ứng dụng của mình, chẳng hạn như
- Tạo một ứng dụng mạnh mẽ
- Tạo mã sạch và không có lỗi
=> Truy cập vào đây để xem loạt bài hướng dẫn đào tạo Python độc quyền
Bạn sẽ học được gì
- Python thử ngoại trừ
- Ngoại lệ là gì
- Hiểu Truy nguyên
- Ngoại lệ Python phổ biến
- #1] Lỗi Loại
- #2] Lỗi giá trị
- #3] Lỗi thuộc tính
- Xử lý ngoại lệ với TryException
- Xử lý nhiều ngoại lệ với ngoại lệ
- #1] Xử lý nhiều ngoại lệ với một ngoại lệ
- #2] Xử lý nhiều ngoại lệ với nhiều ngoại lệ
- Hãy thử tuyên bố khác
- Hãy thử tuyên bố cuối cùng
- Tăng ngoại lệ
- Các lớp ngoại lệ tùy chỉnh
- Các câu hỏi thường gặp
- Sự kết luận
- đề xuất đọc
Python thử ngoại trừ
Một tin vui là Python có rất nhiều ngoại lệ tích hợp sẵn để bắt lỗi trong mã của chúng ta. Ngoài ra, nó cho chúng tôi cơ hội tạo các ngoại lệ tùy chỉnh khi không có ngoại lệ tích hợp nào phù hợp với nhu cầu của chúng tôi
Ngoại lệ là gì
Vậy ngoại lệ trong Python là gì?
Hãy tạo một mã không hợp lệ và xem trình thông dịch Python sẽ phản hồi như thế nào
Mở trình bao Python và chạy đoạn mã sau
>>> 50/0
Đây là một trong những lỗi phổ biến nhất trong lập trình. Đoạn mã trên cố gắng chia số 50 cho 0 [không]. Trình thông dịch Python coi đây là một hoạt động không hợp lệ và phát sinh ZeroDivisionError, làm gián đoạn chương trình và in một dấu vết
Chúng ta có thể thấy rõ rằng ZeroDivisionError là ngoại lệ đã được nêu ra. Đó thực sự là cách riêng của Python để nói với chúng ta rằng thật không hay khi chia một số cho 0. Mặc dù trong các ngôn ngữ khác như JavaScript, đây không phải là lỗi;
Ngoài ra, điều quan trọng cần biết là đây chỉ là một đối tượng ngoại lệ và Python có sẵn nhiều đối tượng như vậy. Hãy xem tài liệu chính thức của Python này để xem tất cả các Ngoại lệ tích hợp sẵn của Python
Hiểu Truy nguyên
Trước khi chúng tôi xử lý các ngoại lệ, tôi nghĩ sẽ giúp hiểu chính xác điều gì sẽ xảy ra nếu các ngoại lệ không được xử lý và cách Python cố gắng hết sức để thông báo cho chúng tôi về lỗi của chúng tôi
Bất cứ khi nào Python gặp lỗi, nó sẽ đưa ra một ngoại lệ. Nếu ngoại lệ này không được xử lý, thì nó sẽ tạo ra một số thông tin có tên là Traceback. Vì vậy, truy nguyên này chứa thông tin gì?
Nó chứa
- Thông báo lỗi cho chúng tôi biết ngoại lệ nào đã được đưa ra và điều gì đã xảy ra trước khi ngoại lệ này được đưa ra
- Các số dòng khác nhau của mã gây ra lỗi này. Một lỗi có thể do một chuỗi lệnh gọi hàm được gọi là ngăn xếp cuộc gọi mà chúng ta sẽ thảo luận sau tại đây gây ra lỗi
Mặc dù hơi khó hiểu nhưng chúng tôi hứa rằng ví dụ tiếp theo sẽ giúp chúng ta hiểu rõ hơn
Nhớ lại truy nguyên được in từ phép chia 50 cho 0 ở trên, chúng ta có thể thấy rằng truy nguyên chứa các thông tin sau
- File “”: This tells us that this code was run from a console terminal.
- dòng 1. Điều này cho chúng tôi biết rằng đã xảy ra lỗi trong số dòng này
- ZeroDivisionLỗi. chia cho số không. Nó cho chúng tôi biết ngoại lệ nào đã được đưa ra và nguyên nhân gây ra nó
Hãy thử một ví dụ khác và có thể xem ngăn xếp cuộc gọi trông như thế nào. Mở trình chỉnh sửa, nhập mã bên dưới và lưu dưới dạng tracebackExp. py
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 11
Mở một thiết bị đầu cuối trong thư mục tìm thấy tệp này và chạy
python tracebackExp.py
Bạn sẽ thấy dấu vết sau
Tracback ở trên có vẻ khó hiểu nhưng thực sự không phải vậy. Pythonistas đã nghĩ ra cách tốt nhất để đọc truy nguyên, đó là từ dưới lên. Vì vậy, hãy sử dụng sự khôn ngoan này để thử và hiểu những gì truy nguyên này cung cấp
- Ở dưới cùng, chúng tôi nhận được ngoại lệ đã được đưa ra và lý do tại sao nó được đưa ra
- Di chuyển lên trên ta được tên file là tracebackExp. py nơi xảy ra lỗi này, phép tính gây ra lỗi này compute = tê/div, hàm stack2 và dòng số liên kết 6 nơi phép tính này được thực hiện
- Di chuyển lên trên, chúng ta thấy rằng hàm stack2 của chúng ta đã được gọi trong hàm stack1 ở dòng số 3
- Moving to the topmost, we see that the function stack1 was called in line number 11. tells us that it is the file that is being executed.
Ngoại lệ Python phổ biến
Thư viện Python định nghĩa rất nhiều ngoại lệ tích hợp. Bạn có thể kiểm tra Tài liệu Python hoặc gọi hàm local[] tích hợp như bên dưới
>>> dir[locals[]['__builtins__']]
Chúng tôi sẽ không cố gắng giải quyết tất cả các trường hợp ngoại lệ này, nhưng chúng tôi sẽ xem một số trường hợp ngoại lệ phổ biến mà bạn có thể gặp phải
#1] Lỗi Loại
Nó được nâng lên khi một thao tác hoặc chức năng được áp dụng cho một đối tượng thuộc loại không phù hợp
ví dụ 1
Hãy xem xét chương trình dưới đây. Nó lấy số bị chia và số bị chia, sau đó tính toán và in kết quả của phép chia số bị chia cho số chia
def compute_division[]: dividend = int[input["Enter the dividend: "]] # cast string to int divisor = input["Enter the divisor: "] # no casting # Compute division result = dividend/divisor # print result print["The result of {}/{} is: {}".format[dividend, divisor, result]] if __name__ == '__main__': result = compute_division[]
Chúng tôi yêu cầu giá trị của số bị chia và số chia từ người dùng, nhưng chúng tôi quên truyền giá trị chuỗi của số chia thành một số nguyên. Vì vậy, chúng ta kết thúc với kiểu của số bị chia là số nguyên [int] và kiểu của số chia là chuỗi [str]. Sau đó, chúng tôi nhận được TypeError vì toán tử chia [/] không hoạt động trên chuỗi
Bạn có thể quan tâm khi biết rằng không giống như Python, Javascript có Type Coercion về cơ bản chuyển đổi một trong các loại của toán hạng thành một giá trị tương đương của loại toán hạng khác khi các toán hạng thuộc các loại khác nhau
#2] Lỗi giá trị
Điều này xảy ra khi một thao tác hoặc hàm nhận được một đối số có kiểu phù hợp nhưng giá trị không phù hợp
ví dụ 2
Hãy xem xét chương trình của chúng tôi trong Ví dụ 1 ở trên
Nếu người dùng nhập một giá trị chữ và số cho cổ tức như '3a', thì chương trình của chúng tôi sẽ tăng ngoại lệ ValueError. Điều này là do, mặc dù phương thức int[] của Python nhận vào bất kỳ số hoặc chuỗi nào và trả về một đối tượng số nguyên, nhưng giá trị chuỗi không được chứa các chữ cái hoặc bất kỳ giá trị không phải là số nào
#3] Lỗi thuộc tính
Ngoại lệ này được đưa ra khi gán hoặc tham chiếu một thuộc tính không tồn tại
ví dụ 3
Xét chương trình dưới đây. Nó nhận vào một số và tính căn bậc hai của nó bằng mô-đun toán Python
import math # import math library to gain access to its code def compute_square_root[number]: # compute the square root using the math library result = math.sqr[number] return result if __name__ == '__main__': # get input to compute from user number = int[input["Compute Square root of: "]] # call function to compute square root
Khi người dùng nhập một số, chương trình của chúng tôi sẽ cố gắng sử dụng một hàm từ mô-đun toán học để tính căn bậc hai của nó nhưng ở đây, chúng tôi đã mắc lỗi. Thay vì sqrt, chúng tôi đã gõ nhầm sqr không tồn tại trong mô-đun toán học
Vì vậy, chúng tôi đã cố gắng tham chiếu một thuộc tính sqr không tồn tại và dẫn đến ngoại lệ AttributeError được nêu ra. Hầu hết chúng ta đều mắc lỗi này rất nhiều. Vì vậy, bạn không đơn độc
Xử lý ngoại lệ với TryException
Là một lập trình viên, một điều mà hầu hết chúng ta sẽ dành thời gian là viết một đoạn mã mạnh mẽ và có khả năng phục hồi. Mã không bị hỏng do một số lỗi. Trong Python, chúng ta có thể đạt được điều này bằng cách đặt các câu lệnh của chúng ta bên trong câu lệnh try–ngoại trừ
Câu lệnh Try-Exception trong Python
Câu lệnh try-ngoại trừ có cấu trúc như sau
try: #your code goes here except """Specify exception type[s] here""": #handle exception here
Hãy đính kèm mã trong tracebackExp. py bên trong câu lệnh try-ngoại trừ
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 try: # 6 compute = numb/div # 7 print[compute] # 8 except ZeroDivisionError as zde: # 9 print[zde] # 10 if __name__ == '__main__': # 12 numb = 5 # 13 stack1[numb] # 14 print["program continuous"] # 15
Chạy mã này sẽ tạo ra đầu ra
Đây là cách câu lệnh try-ngoại trừ hoạt động. Python thực thi mã trong khối thử dòng 7-8. Nếu không tìm thấy mã không hợp lệ, thì mã trong khối ngoại trừ dòng 10 sẽ bị bỏ qua và quá trình thực thi tiếp tục
Tuy nhiên, nếu tìm thấy một mã không hợp lệ, thì việc thực thi sẽ ngay lập tức dừng lại trong khối thử và kiểm tra xem ngoại lệ được đưa ra có khớp với ngoại lệ mà chúng tôi đã cung cấp trong câu lệnh ngoại trừ dòng 9 hay không. Nếu nó phù hợp, thì khối ngoại trừ được thực thi và tiếp tục. Nếu không, chương trình sẽ ngắt
Khối thử thường chứa mã có thể gây ra ngoại lệ trong khi khối ngoại trừ bắt và xử lý ngoại lệ
Xử lý nhiều ngoại lệ với ngoại lệ
Chúng tôi có thể xử lý nhiều ngoại lệ với một “ngoại lệ” hoặc nhiều “ngoại lệ”. Tất cả phụ thuộc vào cách bạn muốn xử lý từng ngoại lệ
#1] Xử lý nhiều ngoại lệ với một ngoại lệ
________số 8Phương pháp này được sử dụng khi chúng tôi nghi ngờ rằng mã của chúng tôi có thể đưa ra các ngoại lệ khác nhau và chúng tôi muốn thực hiện hành động tương tự trong từng trường hợp. Vì vậy, nếu trình thông dịch Python tìm thấy kết quả khớp, thì mã được viết trong khối ngoại trừ sẽ thực thi
Hãy xem xét mã Python ví dụ bên dưới
def get_fraction[value, idx]: arr = [4,5,2,0] # a list of numbers idx_value = arr[idx] # if idx is > arr length, IndexError will be raised value/idx_value # if idx_value == 0, ZeroDivisionError will be raised if __name__ =='__main__': # set 'value' and 'idx' value = 54 idx = 3 # call function in a try-except statement. try: result = get_fraction[value, idx] print["Fraction is ", result] except [IndexError, ZeroDivisionError] as ex: print[ex]
Chúng tôi có hai trường hợp ngoại lệ có thể được nêu ra ở đây, ZeroDivisionError và IndexError. Nếu bất kỳ ngoại lệ nào trong số này được đưa ra, thì khối ngoại trừ sẽ được thực thi
Trong đoạn mã trên, idx=3, vì vậy idx_value trở thành 0 và value/idx_value sẽ tăng ZeroDivisionError
#2] Xử lý nhiều ngoại lệ với nhiều ngoại lệ
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 110
Nếu chúng tôi muốn xử lý từng ngoại lệ riêng biệt, thì đây là cách bạn có thể thực hiện
Hãy xem xét mã Python ví dụ bên dưới
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 111
Chúng tôi nhận thấy ở đây rằng Exception đã được sử dụng trong câu lệnh except cuối cùng. Điều này là do đối tượng ngoại lệ Exception khớp với bất kỳ ngoại lệ nào. Vì lý do này, nó phải luôn ở cuối cùng, vì Python sẽ ngừng kiểm tra các trình xử lý ngoại lệ khác khi một trình xử lý phù hợp
Trong đoạn mã trên, idx=5, do đó mảng[idx] sẽ tăng IndexError vì idx lớn hơn độ dài của mảng danh sách
Ngoài ra, không chắc chắn ngoại lệ nào được đưa ra bởi ứng dụng của bạn không bao giờ an toàn để tiếp tục thực thi. Đó là lý do tại sao chúng tôi có loại Ngoại lệ để bắt bất kỳ ngoại lệ không được dự đoán nào. Sau đó, chúng tôi thông báo cho người dùng và làm gián đoạn ứng dụng bằng cách đưa ra ngoại lệ tương tự
Hãy thử tuyên bố khác
Đây là một tính năng tùy chọn của xử lý ngoại lệ và cho phép bạn thêm mã mà bạn muốn chạy khi không có lỗi xảy ra. Nếu xảy ra lỗi, khối khác này sẽ không chạy
Xem xét ví dụ về mã Python bên dưới, mở trình chỉnh sửa của bạn và lưu mã dưới dạng otherTry. py
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 112
Chúng tôi nhận đầu vào từ người dùng và sử dụng nó để chia 1. Chúng tôi có hai trường hợp ngoại lệ có thể xảy ra ở đây, đầu vào của người dùng không hợp lệ sẽ gây ra ValueError và số không [0] sẽ gây ra ZeroDivisionError. Tuyên bố ngoại trừ của chúng tôi xử lý các lỗi này
Bây giờ, chúng tôi muốn in ra giá trị của giá trị. Khối khác của chúng tôi đảm bảo rằng nó chỉ được in nếu khối thử của chúng tôi thực thi mà không có lỗi. Điều này rất quan trọng vì nếu xảy ra lỗi trong khối thử của chúng tôi, giá trị sẽ không được xác định. Vì vậy, truy cập nó sẽ phát sinh một lỗi khác
Chạy đoạn mã trên với Python otherThử. py
Đầu ra ở trên cho thấy rằng đối với đầu vào đầu tiên, chúng tôi đã nhập 0 và nhấn ENTER. Vì số chia của chúng tôi nhận được 0, 1/số chia tăng lên zeroDivisionError. Đầu vào thứ hai của chúng tôi là k không hợp lệ cho int[], do đó, ValueError ngoại lệ được đưa ra
Nhưng đầu vào cuối cùng của chúng tôi là 9 hợp lệ và kết quả là chúng tôi nhận được giá trị của "giá trị" được in là 0. 1111111111111111
Hãy thử tuyên bố cuối cùng
Đây cũng là một tính năng tùy chọn của xử lý ngoại lệ và sẽ luôn chạy bất kể điều gì xảy ra trong trình xử lý ngoại lệ
Đó là
- Có hay không một ngoại lệ xảy ra
- Ngay cả khi 'return' được gọi trong các khối khác
- Ngay cả khi tập lệnh bị thoát trong các khối khác
Vì vậy, nếu chúng tôi có một mã mà chúng tôi muốn chạy trong mọi tình huống, khối cuối cùng là người của chúng tôi. Khối này chủ yếu được sử dụng để dọn dẹp như đóng tệp
Hãy xem xét mã Python ví dụ bên dưới
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 113
Mã này cố mở và đọc văn bản tệp. txt trong thư mục hiện tại của nó. Nếu tệp tồn tại, thì chương trình của chúng tôi sẽ in dòng đầu tiên của tệp, sau đó khối cuối cùng của chúng tôi sẽ chạy và đóng tệp
Giả sử chúng tôi có một tệp có tên là văn bản. txt trong thư mục chứa tệp chương trình này và chứa Hello. Nếu chúng ta chạy chương trình, chúng ta sẽ có đầu ra
Ví dụ này được chọn có chủ ý vì tôi muốn chúng tôi giải quyết một vấn đề nhỏ có thể xảy ra khi đóng tệp trong khối cuối cùng
Nếu tệp không tồn tại, ngoại lệ FileNotFoundError sẽ được đưa ra và biến openFile sẽ không được xác định và sẽ không phải là đối tượng tệp. Do đó, cố gắng đóng nó trong khối cuối cùng sẽ tạo ra một ngoại lệ UnboundLocalError, một lớp con của NameError
Về cơ bản, điều này nói rằng chúng ta đang cố gắng tham chiếu biến openFile trước khi nó được gán
Một mẹo nhỏ ở đây là sử dụng các trình xử lý ngoại lệ bên trong khối cuối cùng
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 114
Nếu khối thử của chúng tôi tăng FileNotFoundError, thì chúng tôi sẽ có đầu ra sau
Tăng ngoại lệ
Một tin tốt về các ngoại lệ Python là chúng ta có thể cố ý nâng cao chúng. Các ngoại lệ được nêu ra với câu lệnh nâng cao
Câu lệnh raise có cú pháp như sau
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 115
Mở một thiết bị đầu cuối và nâng cao bất kỳ đối tượng ngoại lệ nào từ Ngoại lệ dựng sẵn của Python. Ví dụ: nếu chúng tôi tăng ZeroDivisionError.
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 116
Chúng ta sẽ lấy lại dấu vết
Vì vậy, tại sao điều quan trọng là tăng ngoại lệ?
- Khi làm việc với các ngoại lệ tùy chỉnh
- Trong quá trình kiểm tra vệ sinh
Các lớp ngoại lệ tùy chỉnh
Một ngoại lệ tùy chỉnh là một ngoại lệ mà bạn tạo để xử lý các lỗi dành riêng cho nhu cầu của bạn. Bí quyết là, chúng ta định nghĩa một lớp bắt nguồn từ đối tượng Exception, sau đó chúng ta sử dụng câu lệnh nâng cao để nâng cao lớp ngoại lệ của mình
Giả sử chúng tôi muốn kiểm tra đầu vào của người dùng và đảm bảo giá trị đầu vào không âm [kiểm tra độ chính xác]. Tất nhiên, chúng tôi có thể tăng ngoại lệ ValueError của Python nhưng chúng tôi sẽ muốn tùy chỉnh lỗi bằng cách đặt cho nó một tên cụ thể và dễ hiểu như InputIsNegativeError. Nhưng ngoại lệ này không phải là Ngoại lệ dựng sẵn của Python
Vì vậy, trước tiên, chúng tôi tạo lớp cơ sở sẽ xuất phát từ Ngoại lệ
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 117
Sau đó, chúng tôi tạo lớp ngoại lệ sẽ kế thừa lớp cơ sở và sẽ xử lý lỗi cụ thể của chúng tôi
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 118
Hãy kiểm tra điều này
def stack1[numb]: # 1 div = 0 # 2 stack2[numb, div] # 3 def stack2[numb, div]: # 5 compute = numb/div # 6 print[compute] # 7 if __name__ == '__main__': # 9 numb = 5 # 10 stack1[numb] # 119
Yêu cầu mã trên cho đầu vào của người dùng và kiểm tra xem nó có âm không. Nếu đúng, nó sẽ làm tăng ngoại lệ tùy chỉnh InputIsNegativeError của chúng tôi, lỗi này sau đó sẽ bị bắt trong câu lệnh ngoại trừ
Dưới đây là mã hoàn chỉnh
python tracebackExp.py0
Nếu giá trị đầu vào là một số âm như -1, thì chúng ta sẽ có đầu ra
Hãy xem tài liệu Python để biết thêm chi tiết về các ngoại lệ tùy chỉnh của Python
Các câu hỏi thường gặp
Câu hỏi 1] Python xử lý ngoại lệ như thế nào?
Câu trả lời. Python xử lý các ngoại lệ bằng câu lệnh try-ngoại trừ. Mã có thể đưa ra một ngoại lệ được đặt và thực thi trong khối thử trong khi khối ngoại trừ giữ mã sẽ xử lý các ngoại lệ nếu có phát sinh
Q #2] Điều gì đang gây ra một ngoại lệ trong Python?
Câu trả lời. Bất cứ khi nào trình thông dịch Python gặp mã không hợp lệ, nó sẽ đưa ra một ngoại lệ, đó là cách riêng của Python để cho chúng ta biết rằng có điều gì đó không mong muốn đã xảy ra. Chúng ta cũng có thể cố tình đưa ra các ngoại lệ bằng cách sử dụng câu lệnh nâng cao
Q #3] Python xử lý nhiều ngoại lệ như thế nào?
Câu trả lời. Python xử lý nhiều ngoại lệ bằng cách sử dụng một khối ngoại trừ hoặc nhiều khối ngoại trừ
Đối với một khối duy nhất, các ngoại lệ được chuyển thành một bộ. ngoại trừ [Ngoại lệ1, Ngoại lệ2,. ,ExceptionN] và Python kiểm tra sự trùng khớp từ phải sang trái. Trong trường hợp này, hành động tương tự được thực hiện cho từng ngoại lệ
Một cách khác để nắm bắt tất cả các ngoại lệ là bỏ tên của ngoại lệ sau từ khóa except
python tracebackExp.py1
Cách thứ hai là sử dụng một khối ngoại trừ cho mỗi ngoại lệ
python tracebackExp.py2
Bằng cách này, bạn có thể thực hiện các hành động riêng biệt cho từng Ngoại lệ
Q #4] Tại sao việc xử lý Ngoại lệ lại quan trọng trong Python?
Câu trả lời. Lợi ích của việc xử lý ngoại lệ trong Python là chúng ta có thể tạo các ứng dụng mạnh mẽ, sạch sẽ và không có lỗi. Chúng tôi không muốn mã sản xuất của mình gặp sự cố do một số lỗi, vì vậy chúng tôi xử lý lỗi và duy trì hoạt động của ứng dụng
Q #5] Làm thế nào để bạn bỏ qua một ngoại lệ trong Python?
Câu trả lời. Để bỏ qua một ngoại lệ trong Python, hãy sử dụng từ khóa pass trong khối ngoại trừ. Giả sử chúng ta muốn bỏ qua ngoại lệ ValueError. Chúng tôi sẽ làm theo cách này
python tracebackExp.py3
Trừ khi bạn biết mình đang làm gì, nếu không thì việc bỏ qua các ngoại lệ là một cách làm không tốt. Ít nhất, thông báo cho người dùng về tất cả các lỗi tiềm ẩn
Sự kết luận
Trong hướng dẫn này, chúng tôi đã đề cập. Ngoại lệ Python, Traceback;