Bạn có thể kiểm tra nhiều lỗi trong một dòng ngoại trừ trong python không?
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 Show
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ư
=> 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ừ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ênTrướ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
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
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
Ngoại lệ Python phổ biếnThư 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ạiNó đượ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ínhNgoạ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 TryExceptionLà 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à
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ệ?
Các lớp ngoại lệ tùy chỉnhMộ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ặpCâ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ậnTrong hướng dẫn này, chúng tôi đã đề cập. Ngoại lệ Python, Traceback; Bạn có thể kiểm tra nhiều lỗi trong một dòng ngoại trừ không?Có, có thể kiểm tra nhiều loại lỗi chỉ bằng một câu lệnh thử và ngoại trừ . Đối với except , chúng ta có thể bao gồm nhiều loại lỗi được liệt kê trong một tuple. Nó sẽ kiểm tra xem có bất kỳ lỗi nào được liệt kê không.
Bạn có thể có hai câu lệnh except trong Python không?🔹 Nhiều mệnh đề trừ
. Nhiều nhất một trình xử lý sẽ được thực thi. Trong ví dụ này, chúng tôi có hai mệnh đề ngoại trừ. A try statement may have more than one except clause, to specify handlers for different exceptions. At most one handler will be executed. In this example, we have two except clauses.
Một khối có thể xử lý nhiều ngoại lệ không?Trong Java 7, khối catch đã được cải thiện để xử lý nhiều ngoại lệ trong một khối catch duy nhất . Nếu bạn đang bắt nhiều ngoại lệ và chúng có mã giống nhau, thì việc sử dụng tính năng này sẽ giảm trùng lặp mã.
Có bao nhiêu loại lỗi Xử lý ngoại lệ trong Python là gì?Có hai loại lỗi chủ yếu trong lập trình python là - Lỗi cú pháp và Lỗi logic hoặc Ngoại lệ . Bất cứ khi nào chúng ta không viết đúng cú pháp của ngôn ngữ lập trình python (hoặc bất kỳ ngôn ngữ nào khác) thì trình thông dịch python sẽ đưa ra một lỗi được gọi là lỗi cú pháp. |