python - 捕获python中的特定错误

标签 python django python-3.x exception error-handling

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

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/

相关文章:

python - 詹森-香农散度

Python排列

python - Django form.is_valid() 始终为假

python - 分发具有多个模块的 Python 命令行程序

python - 空像素的 matplotlib hist2d 颜色图

python - 使用 Python 将 Oracle 数据库表导出为 XML 文件?

django - 干草堆分数没有意义

python - 使用 ForeignKey,NON NULL 约束失败

python - 黑色空窗 Kivy

python - Raspberry Pi 中的硬币计数器 (RPi-GPIO)