gpt4 book ai didi

python - 捕获python中的特定错误

转载 作者:行者123 更新时间:2023-12-03 08:05:04 24 4
gpt4 key购买 nike

我试图捕获一个特定的异常:

username = 'myuser'
try:
user = User.objects.get(username=username)
print(user)
except Exception as e:
if type(e)=='django.contrib.auth.models.User.DoesNotExist':
print('No such user')

print (type(e))

但是我没有进入if循环,而是得到:
<class 'django.contrib.auth.models.User.DoesNotExist'>

为什么会这样呢?如何捕获特定的异常?

最佳答案

type(e)不返回字符串。注意

(<class 'django.contrib.auth.models.User.DoesNotExist'> != 
'django.contrib.auth.models.User.DoesNotExist')
if条件应为 if type(e) == django.contrib.auth.models.User.DoesNotExist或更好, if isinstance(e, django.contrib.auth.models.User.DoesNotExist)
但是,正确的解决方案是使用多个 except 子句
username = 'myuser'
try:
user = User.objects.get(username=username)
print(user)
except User.DoesNotExist:
# do something
print('No such user')
except SomeOtherException:
# do a different thing
except Foo:
# do bar

请注意,您还可以将对不同异常类型的处理结合到同一个 except子句中:
try:
# some bad code
except (User.DoesnotExist, SomeOtherException):
# error handling code

引用
1. Python: One Try Multiple Except

关于python - 捕获python中的特定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52354405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com