10
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Giả sử tôi có chức năng sau:
def test[]:
...
if x['error']:
raise
Điều này sẽ tăng một ngoại lệ bất kể
def test[]:
...
try:
if x['error']:
raise
except:
return
4 có được xác định hay không.Thay vào đó nếu tôi thử điều này, nó không ném bất kỳ ngoại lệ nào:
def test[]:
...
try:
if x['error']:
raise
except:
return
Làm thế nào tôi có thể kiểm tra một giá trị cụ thể và trả về một ngoại lệ nếu nó được xác định và để trả về thành công nếu nó không được xác định?
Hỏi ngày 4 tháng 9 năm 2018 lúc 2:14Sep 4, 2018 at 2:14
3
Nếu bạn muốn trả về lỗi dưới dạng chuỗi:
>>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
Nếu bạn muốn xảy ra lỗi:
>>> def test[]:
try:
if x['error']:raise
except:
raise
>>> test[]
Traceback [most recent call last]:
File "", line 1, in
test[]
File "", line 3, in test
if x['error']:raise
NameError: name 'x' is not defined
Đã trả lời ngày 4 tháng 9 năm 2018 lúc 2:36Sep 4, 2018 at 2:36
Black Thunderblack ThunderBlack Thunder
6.4435 huy hiệu vàng29 Huy hiệu bạc57 Huy hiệu đồng5 gold badges29 silver badges57 bronze badges
def test[]:
...
if x.get[‘error’]:
raise
Bạn có thể tránh không có lỗi khi sử dụng chức năng
def test[]:
...
try:
if x['error']:
raise
except:
return
5 được tích hợp từ điển. Nhận sẽ trả về def test[]:
...
try:
if x['error']:
raise
except:
return
6 nếu giá trị tại khóa được chỉ định không tồn tại thay vì ném một ngoại lệ.Đã trả lời ngày 4 tháng 9 năm 2018 lúc 2:28Sep 4, 2018 at 2:28
Hãy thử cái này
def check_not_exist[d,k]:
#if keys exists in dict,raise it
if k in d:
raise
else:
return True
Đã trả lời ngày 4 tháng 9 năm 2018 lúc 2:33Sep 4, 2018 at 2:33
Vinayvinayvinay
1.3201 Huy hiệu vàng13 Huy hiệu bạc22 Huy hiệu đồng1 gold badge13 silver badges22 bronze badges
Nâng cao, trở lại và làm thế nào để không bao giờ thất bại trong Python.
Tôi nghe câu hỏi này rất nhiều: Tôi có nêu ra hoặc trả lại lỗi này trong Python không?
Câu trả lời đúng sẽ phụ thuộc vào các mục tiêu của logic ứng dụng của bạn. Bạn muốn đảm bảo mã Python của bạn không bị thất bại trong âm thầm, cứu bạn và đồng đội của bạn khỏi phải săn lùng các lỗi cố thủ sâu sắc.ensure your Python code doesn’t fail silently, saving you and your teammates from having to hunt down deeply entrenched errors.
Ở đây, sự khác biệt giữa
def test[]:
...
try:
if x['error']:
raise
except:
return
7 và def test[]:
...
try:
if x['error']:
raise
except:
return
8 khi xử lý các lỗi trong Python.Khi nào nên nâng cao
Tuyên bố
7 cho phép lập trình viên buộc một ngoại lệ cụ thể xảy ra. [8.4 Tăng ngoại lệ]def test[]: ... try: if x['error']: raise except: return
Sử dụng
def test[]:
...
try:
if x['error']:
raise
except:
return
7 Khi bạn biết bạn muốn có một hành vi cụ thể, chẳng hạn như:raise TypeError["Wanted strawberry, got grape."]
Tăng một ngoại lệ chấm dứt dòng chảy của chương trình của bạn, cho phép ngoại lệ để bong bóng lên ngăn xếp cuộc gọi. Trong ví dụ trên, điều này sẽ cho phép bạn xử lý rõ ràng
>>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
1 sau. Nếu >>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
1 không được xử lý, việc thực thi mã sẽ dừng và bạn sẽ nhận được một thông báo ngoại lệ chưa được xử lý.Nâng cao là hữu ích trong trường hợp bạn muốn xác định một hành vi nhất định sẽ xảy ra. Ví dụ: bạn có thể chọn không cho phép một số từ trong trường văn bản:
if "raisins" in text_field:
raise ValueError["That word is not allowed here"]
Raise có một ví dụ về một ngoại lệ, hoặc một dẫn xuất của lớp ngoại lệ. Dưới đây là tất cả các trường hợp ngoại lệ tích hợp Python.
Nâng cao có thể giúp bạn tránh viết các chức năng thất bại âm thầm. Ví dụ: mã này sẽ không nêu ra một ngoại lệ nếu
>>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
3 không tồn tại:import os
def sandwich_or_bust[bread: str] -> str:
jam = os.getenv["JAM"]
return bread + str[jam] + bread
s = sandwich_or_bust["\U0001F35E"]
print[s]
# Prints "🍞None🍞" which is not very tasty.
Để khiến chức năng
>>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
4 thực sự phá sản, hãy thêm def test[]:
...
try:
if x['error']:
raise
except:
return
7:import os
def sandwich_or_bust[bread: str] -> str:
jam = os.getenv["JAM"]
if not jam:
raise ValueError["There is no jam. Sad bread."]
return bread + str[jam] + bread
s = sandwich_or_bust["\U0001F35E"]
print[s]
# ValueError: There is no jam. Sad bread.
Bất cứ khi nào mã của bạn tương tác với một biến bên ngoài, mô -đun hoặc dịch vụ, có khả năng thất bại. Bạn có thể sử dụng
def test[]:
...
try:
if x['error']:
raise
except:
return
7 trong một tuyên bố >>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
7 để giúp đảm bảo những thất bại đó không im lặng.Tăng trong >>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
8 và >>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
9
>>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
>>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
Để xử lý một lỗi có thể xảy ra bằng cách thực hiện một hành động nếu có, hãy sử dụng tuyên bố
>>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
8 ____ ____29.def test[]:
...
try:
if x['error']:
raise
except:
return
0Điều này cho phép bạn
>>> def test[]:
try:
if x['error']:raise
except:
raise
>>> test[]
Traceback [most recent call last]:
File "", line 1, in
test[]
File "", line 3, in test
if x['error']:raise
NameError: name 'x' is not defined
2 trước khi tái tạo ngoại lệ. Nếu bạn muốn tuyên truyền một ngoại lệ bị bắt, hãy sử dụng def test[]:
...
try:
if x['error']:
raise
except:
return
7 mà không có tranh luận để tránh mất dấu vết ngăn xếp.Nếu bạn không biết rằng ngoại lệ sẽ là
>>> def test[]:
try:
if x['error']:raise
except:
raise
>>> test[]
Traceback [most recent call last]:
File "", line 1, in
test[]
File "", line 3, in test
if x['error']:raise
NameError: name 'x' is not defined
4, bạn cũng có thể sử dụng >>> def test[]:
try:
if x['error']:raise
except:
raise
>>> test[]
Traceback [most recent call last]:
File "", line 1, in
test[]
File "", line 3, in test
if x['error']:raise
NameError: name 'x' is not defined
5 hoặc bắt bất kỳ dẫn xuất nào của lớp >>> def test[]:
try:
if x['error']:raise
except:
raise
>>> test[]
Traceback [most recent call last]:
File "", line 1, in
test[]
File "", line 3, in test
if x['error']:raise
NameError: name 'x' is not defined
6 với >>> def test[]:
try:
if x['error']:raise
except:
raise
>>> test[]
Traceback [most recent call last]:
File "", line 1, in
test[]
File "", line 3, in test
if x['error']:raise
NameError: name 'x' is not defined
7. Bất cứ khi nào có thể, nó tốt hơn để nâng cao và xử lý các ngoại lệ một cách rõ ràng.Sử dụng
>>> def test[]:
try:
if x['error']:raise
except:
raise
>>> test[]
Traceback [most recent call last]:
File "", line 1, in
test[]
File "", line 3, in test
if x['error']:raise
NameError: name 'x' is not defined
8 cho mã để thực thi nếu >>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
8 không tăng ngoại lệ. Ví dụ:
def test[]:
...
try:
if x['error']:
raise
except:
return
1Bạn cũng có thể đặt dòng in trong khối
>>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
8, tuy nhiên, điều này ít rõ ràng hơn.Khi nào trở lại
Khi bạn sử dụng
def test[]:
...
try:
if x['error']:
raise
except:
return
8 trong Python, bạn sẽ trả lại một giá trị. Một chức năng trở về vị trí mà nó được gọi từ.Mặc dù nó thành ngữ nhiều hơn so với các lỗi
def test[]:
...
try:
if x['error']:
raise
except:
return
7 trong Python, nhưng có thể có những lúc bạn tìm thấy def test[]:
...
try:
if x['error']:
raise
except:
return
8 để được áp dụng nhiều hơn.Ví dụ: nếu mã Python của bạn tương tác với các thành phần khác không xử lý các lớp ngoại lệ, bạn có thể muốn trả lại một tin nhắn thay thế. Ở đây, một ví dụ sử dụng tuyên bố
>>> def test[]:
try:
if x['error']:raise
except Exception as err:
return err
>>> test[]
NameError["name 'x' is not defined",]
8 ____ ____29:def test[]:
...
try:
if x['error']:
raise
except:
return
2Lưu ý rằng khi bạn trả về một đối tượng lớp
>>> def test[]:
try:
if x['error']:raise
except:
raise
>>> test[]
Traceback [most recent call last]:
File "", line 1, in
test[]
File "", line 3, in test
if x['error']:raise
NameError: name 'x' is not defined
6, bạn sẽ nhận được một đại diện cho giá trị liên quan của nó, thường là mục đầu tiên trong danh sách các đối số của nó. Trong ví dụ trên, đây là lời giải thích chuỗi của ngoại lệ. Trong một số trường hợp, nó có thể là một tuple với thông tin khác về ngoại lệ.Bạn cũng có thể sử dụng
def test[]:
...
try:
if x['error']:
raise
except:
return
8 để đưa ra một đối tượng lỗi cụ thể, chẳng hạn như với def test[]:
...
if x.get[‘error’]:
raise
8 trong Django. Ví dụ: bạn có thể muốn trả lại def test[]:
...
if x.get[‘error’]:
raise
9 thay vì def check_not_exist[d,k]:
#if keys exists in dict,raise it
if k in d:
raise
else:
return True
0 vì lý do bảo mật:def test[]:
...
try:
if x['error']:
raise
except:
return
3Sử dụng
def test[]:
...
try:
if x['error']:
raise
except:
return
8 có thể giúp bạn viết mã ồn ào một cách thích hợp khi chức năng của bạn dự kiến sẽ trả lại một giá trị nhất định và khi tương tác với các yếu tố bên ngoài.Phần quan trọng nhất
Thất bại im lặng tạo ra một số lỗi khó chịu nhất để tìm và sửa chữa. Bạn có thể giúp tạo trải nghiệm phát triển dễ chịu cho chính mình và nhóm của bạn bằng cách sử dụng
def test[]:
...
try:
if x['error']:
raise
except:
return
7 và def test[]:
...
try:
if x['error']:
raise
except:
return
8 để đảm bảo rằng các lỗi được xử lý trong mã Python của bạn.ensure that errors are handled in your Python code.Tôi viết về thực tiễn phát triển tốt và cách cải thiện năng suất như một nhà phát triển phần mềm. Bạn có thể nhận được những lời khuyên này ngay trong hộp thư đến của bạn bằng cách đăng ký bên dưới!