Khi viết mã bằng Python, bạn thường có thể đoán trước các lỗi thời gian chạy ngay cả trong một chương trình đúng về mặt cú pháp và logic. Những lỗi này có thể do đầu vào không hợp lệ hoặc một số điểm không nhất quán có thể dự đoán được gây ra Trong Python, bạn có thể sử dụng các khối divide(27,0)
1 và divide(27,0)
2 để xử lý hầu hết các lỗi này dưới dạng ngoại lệ một cách dễ dàng hơnTrong hướng dẫn này, bạn sẽ học cú pháp chung của divide(27,0)
1 và divide(27,0)
2. Sau đó, chúng ta sẽ tiến hành mã hóa các ví dụ đơn giản, thảo luận về những lỗi có thể xảy ra và đưa ra các biện pháp khắc phục bằng cách sử dụng các khối divide(27,0)
1 và divide(27,0)
2Cú pháp của Python Thử và loại trừ các khốiHãy bắt đầu bằng việc tìm hiểu cú pháp của câu lệnh divide(27,0)
1 và divide(27,0)
2 trong Python. Mẫu chung được hiển thị bên dưới________số 8_______Hãy xem các khối khác nhau được sử dụng để làm gì - Khối
divide(27,0)
1 là khối câu lệnh bạn muốn thử thực hiện. Tuy nhiên, có thể có lỗi thời gian chạy do một ngoại lệ và khối này có thể không hoạt động như dự kiến - Khối
divide(27,0)
2 được kích hoạt khi khối divide(27,0)
1 bị lỗi do ngoại lệ. Nó chứa một tập hợp các câu lệnh thường cung cấp cho bạn một số ngữ cảnh về những gì đã xảy ra bên trong khối divide(27,0)
1 - Bạn phải luôn đề cập đến loại lỗi mà bạn định bắt là ngoại lệ bên trong khối
divide(27,0)
2, được biểu thị bằng trình giữ chỗ # Output
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-19-932ea024ce43> in <module>()
----> 1 divide(27,0)
<ipython-input-1-c98670fd7a12> in divide(num, div)
1 def divide(num,div):
----> 2 return num/div
ZeroDivisionError: division by zero
4 trong đoạn mã trên - Bạn cũng có thể sử dụng
divide(27,0)
2 mà không chỉ định # Output
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-19-932ea024ce43> in <module>()
----> 1 divide(27,0)
<ipython-input-1-c98670fd7a12> in divide(num, div)
1 def divide(num,div):
----> 2 return num/div
ZeroDivisionError: division by zero
4. Tuy nhiên, đây không phải là một phương pháp được khuyến nghị vì bạn không tính đến các loại lỗi khác nhau có thể xảy ra
Khi cố gắng thực thi mã bên trong khối divide(27,0)
1, cũng có khả năng xảy ra nhiều lỗi Ví dụ: bạn có thể đang truy cập một danh sách bằng chỉ mục nằm ngoài phạm vi, sử dụng khóa từ điển sai và cố mở một tệp không tồn tại - tất cả đều nằm trong khối divide(27,0)
1Trong trường hợp này, bạn có thể gặp phải # Output
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-19-932ea024ce43> in <module>()
----> 1 divide(27,0)
<ipython-input-1-c98670fd7a12> in divide(num, div)
1 def divide(num,div):
----> 2 return num/div
ZeroDivisionError: division by zero
9, try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
0 và try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
1. Và bạn phải thêm bao nhiêu khối divide(27,0)
2 bằng số lỗi mà bạn dự đoán, một khối cho mỗi loại lỗi- Khối
try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
3 chỉ được kích hoạt nếu khối divide(27,0)
1 được thực thi mà không có lỗi. Điều này có thể hữu ích khi bạn muốn thực hiện hành động tiếp theo khi khối divide(27,0)
1 thành công. Ví dụ: nếu bạn thử mở một tệp thành công, bạn có thể muốn đọc nội dung của tệp đó - Khối
try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
6 luôn được thực thi, bất kể điều gì xảy ra trong các khối khác. Điều này hữu ích khi bạn muốn giải phóng tài nguyên sau khi thực thi một khối mã cụ thể
Ghi chú. Các khối try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
3 và try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
6 là tùy chọn. Trong hầu hết các trường hợp, bạn chỉ có thể sử dụng khối divide(27,0)
1 để thử làm điều gì đó và bắt lỗi dưới dạng ngoại lệ bên trong khối divide(27,0)
2 Trong vài phút tới, bạn sẽ sử dụng những gì bạn đã học được cho đến nay để xử lý các ngoại lệ trong Python. Bắt đầu nào Cách xử lý một divide(10,2)
# Output
5.0
1 trong PythonHãy xem xét hàm divide(10,2)
# Output
5.0
2 được hiển thị bên dưới. Nó nhận hai đối số – divide(10,2)
# Output
5.0
3 và divide(10,2)
# Output
5.0
4 – và trả về thương của phép chia divide(10,2)
# Output
5.0
5def divide(num,div):
return num/div
▶ Gọi hàm khác số trả về kết quả như ý res = divide(100,8)
print(res)
# Output
12.5
res = divide(568,64)
print(res)
# Output
8.875
Mã này hoạt động tốt cho đến khi bạn thử chia cho số không divide(27,0)
Bạn thấy rằng chương trình gặp sự cố khi ném một divide(10,2)
# Output
5.0
1# Output
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-19-932ea024ce43> in <module>()
----> 1 divide(27,0)
<ipython-input-1-c98670fd7a12> in divide(num, div)
1 def divide(num,div):
----> 2 return num/div
ZeroDivisionError: division by zero
Bạn có thể xử lý phép chia này bằng 0 như một ngoại lệ bằng cách thực hiện như sau - Trong khối
divide(27,0)
1, hãy gọi hàm divide(10,2)
# Output
5.0
2. Về bản chất, bạn đang cố chia divide(10,2)
# Output
5.0
3 cho divide(10,2)
# Output
5.0
4 - Xử lý trường hợp khi
divide(10,2)
# Output
5.0
4 là divide(10,0)
# Output
You tried to divide by zero :(
2 như một ngoại lệ bên trong khối divide(27,0)
2 - Trong ví dụ này, bạn có thể trừ
divide(10,2)
# Output
5.0
1 bằng cách in một thông báo thông báo cho người dùng rằng họ đã thử chia cho 0
Điều này được hiển thị trong đoạn mã dưới đây try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
Với một đầu vào hợp lệ, mã vẫn hoạt động tốt divide(10,2)
# Output
5.0
Khi bạn cố gắng giảm xuống 0, bạn sẽ được thông báo về ngoại lệ xảy ra và chương trình kết thúc một cách êm đẹp divide(10,0)
# Output
You tried to divide by zero :(
Cách xử lý một divide(10,0)
# Output
You tried to divide by zero :(
5 bằng PythonTrong phần này, bạn sẽ thấy cách bạn có thể sử dụng divide(27,0)
1 và divide(27,0)
2 để xử lý một divide(10,0)
# Output
You tried to divide by zero :(
5 trong Python▶ Xem xét hàm sau đây divide(10,0)
# Output
You tried to divide by zero :(
9 nhận vào một số làm đối số, thêm 10 vào số đó và trả về kết quả của phép cộng nàydef add_10(num):
return num + 10
Bạn có thể gọi hàm divide(10,0)
# Output
You tried to divide by zero :(
9 với bất kỳ số nào và nó sẽ hoạt động tốt, như hình bên dướiresult = add_10(89)
print(result)
#Output
99
Bây giờ hãy thử gọi divide(10,0)
# Output
You tried to divide by zero :(
9 bằng def add_10(num):
return num + 10 2 thay vì def add_10(num):
return num + 10 3def divide(num,div):
return num/div 0Bạn sẽ nhận thấy rằng chương trình của bạn gặp sự cố với thông báo lỗi sau def divide(num,div):
return num/div 1Thông báo lỗi def add_10(num):
return num + 10 4 giải thích rằng bạn chỉ có thể nối hai chuỗi chứ không thể thêm số nguyên vào chuỗiBây giờ, bạn có những điều sau đây - Cho trước một số
def add_10(num):
return num + 10 5, hãy thử gọi hàm divide(10,0)
# Output
You tried to divide by zero :(
9 với đối số là def add_10(num):
return num + 10 5. Nếu đối số là loại hợp lệ, không có ngoại lệ - Mặt khác, khối
divide(27,0)
2 tương ứng với divide(10,0)
# Output
You tried to divide by zero :(
5 được kích hoạt, thông báo cho người dùng rằng đối số thuộc loại không hợp lệ
Điều này được giải thích dưới đây def divide(num,div):
return num/div 2Vì bạn hiện đã xử lý divide(10,0)
# Output
You tried to divide by zero :(
5 như một ngoại lệ, nên bạn chỉ được thông báo rằng đối số thuộc loại không hợp lệdef divide(num,div):
return num/div 3Nếu bạn đã từng làm việc với các danh sách Python hoặc bất kỳ Python iterable nào trước đây, có thể bạn sẽ gặp phải # Output
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-19-932ea024ce43> in <module>()
----> 1 divide(27,0)
<ipython-input-1-c98670fd7a12> in divide(num, div)
1 def divide(num,div):
----> 2 return num/div
ZeroDivisionError: division by zero
9Điều này là do thường khó theo dõi tất cả các thay đổi đối với các lần lặp. Và bạn có thể đang cố truy cập một mục tại một chỉ mục không hợp lệ ▶ Trong ví dụ này, danh sách result = add_10(89)
print(result)
#Output
99 3 có 4 mục. Các chỉ số hợp lệ là 0, 1, 2 và 3 và -1, -2, -3, -4 nếu bạn sử dụng chỉ mục phủ địnhVì result = add_10(89)
print(result)
#Output
99 4 là một chỉ mục hợp lệ, bạn thấy rằng mục ở chỉ mục result = add_10(89)
print(result)
#Output
99 4, là result = add_10(89)
print(result)
#Output
99 6, được in radef divide(num,div):
return num/div 4Nếu bạn thử truy cập vào một mục ở chỉ mục nằm ngoài phạm vi của các chỉ mục hợp lệ, bạn sẽ gặp phải một # Output
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-19-932ea024ce43> in <module>()
----> 1 divide(27,0)
<ipython-input-1-c98670fd7a12> in divide(num, div)
1 def divide(num,div):
----> 2 return num/div
ZeroDivisionError: division by zero
9def divide(num,div):
return num/div 5def divide(num,div):
return num/div 6Nếu bạn đã quen thuộc với mẫu này, bây giờ bạn sẽ sử dụng divide(27,0)
1 và divide(27,0)
2 để xử lý các lỗi chỉ mục▶ Trong đoạn mã bên dưới, bạn hãy thử truy cập mục tại chỉ mục được chỉ định bởi def divide(num,div):
return num/div 00def divide(num,div):
return num/div 7Ở đây, def divide(num,div):
return num/div 00 (def divide(num,div):
return num/div 02) là một chỉ mục hợp lệ và mục tại chỉ mục cụ thể được in radef divide(num,div):
return num/div 8Nếu def divide(num,div):
return num/div 00 nằm ngoài phạm vi hợp lệ cho các chỉ số, thì khối except sẽ bắt # Output
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-19-932ea024ce43> in <module>()
----> 1 divide(27,0)
<ipython-input-1-c98670fd7a12> in divide(num, div)
1 def divide(num,div):
----> 2 return num/div
ZeroDivisionError: division by zero
9 làm ngoại lệ và không còn thông báo lỗi dài nữa. 🙂def divide(num,div):
return num/div 9Thay vào đó, thông báo rằng def divide(num,div):
return num/div 00 nằm ngoài phạm vi chỉ số hợp lệ được hiển thịres = divide(100,8)
print(res)
# Output
12.5
res = divide(568,64)
print(res)
# Output
8.875
0Cách xử lý một try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
0 trong PythonBạn có thể đã gặp phải try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
0 khi làm việc với từ điển Python▶ Xem xét ví dụ này khi bạn có một cuốn từ điển def divide(num,div):
return num/div 08res = divide(100,8)
print(res)
# Output
12.5
res = divide(568,64)
print(res)
# Output
8.875
1- Từ điển
def divide(num,div):
return num/div 08 có 3 cặp khóa-giá trị, def divide(num,div):
return num/div 10, def divide(num,div):
return num/div 11 và def divide(num,div):
return num/div 12 - Bây giờ, bạn thử gõ vào từ điển và truy cập giá trị tương ứng với khóa
def divide(num,div):
return num/div 13
Theo dự kiến, bạn sẽ nhận được một try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
0res = divide(100,8)
print(res)
# Output
12.5
res = divide(568,64)
print(res)
# Output
8.875
2Bạn có thể xử lý try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
0 gần giống như cách bạn xử lý # Output
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-19-932ea024ce43> in <module>()
----> 1 divide(27,0)
<ipython-input-1-c98670fd7a12> in divide(num, div)
1 def divide(num,div):
----> 2 return num/div
ZeroDivisionError: division by zero
9- Bạn có thể thử truy cập giá trị tương ứng với khóa được chỉ định bởi
def divide(num,div):
return num/div 17 - Nếu
def divide(num,div):
return num/div 17 thực sự là một khóa hợp lệ, giá trị tương ứng sẽ được in ra - Nếu bạn gặp phải một ngoại lệ do khóa không tồn tại, bạn sử dụng khối
divide(27,0)
2 để cho người dùng biết
Điều này được giải thích trong đoạn mã dưới đây res = divide(100,8)
print(res)
# Output
12.5
res = divide(568,64)
print(res)
# Output
8.875
3____37_______4▶ Nếu bạn muốn cung cấp ngữ cảnh bổ sung, chẳng hạn như tên của khóa không hợp lệ, bạn cũng có thể làm điều đó. Có thể key bị viết sai chính tả khiến nó không hợp lệ. Trong trường hợp này, việc cho người dùng biết khóa được sử dụng có thể sẽ giúp họ sửa lỗi đánh máy Bạn có thể làm điều này bằng cách bắt khóa không hợp lệ là def divide(num,div):
return num/div 20 và sử dụng nó trong thông báo được in khi ngoại lệ xảy rares = divide(100,8)
print(res)
# Output
12.5
res = divide(568,64)
print(res)
# Output
8.875
5▶ Lưu ý cách tên của phím cũng được in ra res = divide(100,8)
print(res)
# Output
12.5
res = divide(568,64)
print(res)
# Output
8.875
6Cách xử lý một try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
1 trong PythonMột lỗi phổ biến khác xảy ra khi làm việc với tệp trong Python là lỗi try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
1▶ Trong ví dụ sau, bạn đang cố mở tệp def divide(num,div):
return num/div 23 bằng cách chỉ định đường dẫn của nó tới hàm def divide(num,div):
return num/div 24. Và bạn muốn đọc tệp và in ra nội dung của tệpTuy nhiên, bạn chưa tạo tệp ở vị trí đã chỉ định Nếu bạn thử chạy đoạn mã bên dưới, bạn sẽ nhận được một try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
1res = divide(100,8)
print(res)
# Output
12.5
res = divide(568,64)
print(res)
# Output
8.875
7_______37_______8Và sử dụng divide(27,0)
1 và divide(27,0)
2, bạn có thể làm như sau- Hãy thử mở tệp trong khối
divide(27,0)
1 - Xử lý
try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
1 trong khối divide(27,0)
2 bằng cách cho người dùng biết rằng họ đã cố mở một tệp không tồn tại - Nếu khối
divide(27,0)
1 thành công và tệp tồn tại, hãy đọc và in ra nội dung của tệp - Trong khối
try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
6, hãy đóng tệp để không lãng phí tài nguyên. Nhớ lại cách đóng tệp bất kể điều gì xảy ra trong các bước mở và đọc tệp
res = divide(100,8)
print(res)
# Output
12.5
res = divide(568,64)
print(res)
# Output
8.875
9Lưu ý cách bạn đã xử lý lỗi như một ngoại lệ và chương trình kết thúc một cách duyên dáng với thông báo bên dưới divide(27,0)
0▶ Hãy xem xét trường hợp trong đó khối try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
3 được kích hoạt. Tệp def divide(num,div):
return num/div 23 hiện có tại đường dẫn được đề cập trước đóVà đây là nội dung của tệp def divide(num,div):
return num/div 23Bây giờ, chạy lại đoạn mã trước đó hoạt động như mong đợi Lần này, tệp def divide(num,div):
return num/div 23 có mặt, khối try:
res = divide(num,div)
print(res)
except ZeroDivisionError:
print("You tried to divide by zero :( ")
3 được kích hoạt và nội dung của nó được in ra, như hình bên dướiTôi hy vọng điều này làm rõ cách bạn có thể xử lý các ngoại lệ khi làm việc với tệp Phần kết luậnTrong hướng dẫn này, bạn đã học cách sử dụng các câu lệnh divide(27,0)
1 và divide(27,0)
2 trong Python để xử lý các ngoại lệBạn đã mã hóa các ví dụ để hiểu loại ngoại lệ nào có thể xảy ra và cách bạn có thể sử dụng divide(27,0)
2 để phát hiện các lỗi phổ biến nhấtHy vọng bạn thích hướng dẫn này. Mã hóa vui vẻ. Cho đến lần sau. ) QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO QUẢNG CÁO
Bala Priya CTôi là một nhà phát triển và nhà văn kỹ thuật đến từ Ấn Độ. Tôi viết hướng dẫn về mọi thứ liên quan đến lập trình và máy học
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu
Tôi có thể sử dụng thử ngoại trừ trong Python không?
Khối try and except trong Python được sử dụng để bắt và xử lý các ngoại lệ . Python thực thi mã sau câu lệnh try như một phần “bình thường” của chương trình. Mã theo sau câu lệnh ngoại trừ là phản hồi của chương trình đối với bất kỳ ngoại lệ nào trong mệnh đề thử trước đó.
Việc sử dụng Try & là gì?
Câu lệnh try cho phép bạn xác định một khối mã sẽ được kiểm tra lỗi trong khi nó đang được thực thi . Câu lệnh catch cho phép bạn xác định một khối mã sẽ được thực thi, nếu có lỗi xảy ra trong khối thử. |