社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

捕获python中的特定错误

Joel G Mathew • 5 年前 • 1531 次点击  

我试图抓住一个特定的例外:

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'>

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38897
 
1531 次点击  
文章 [ 1 ]  |  最新文章 5 年前
DeepSpace
Reply   •   1 楼
DeepSpace    6 年前

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

请注意,您还可以将不同异常类型的处理组合到相同的 除了 条款:

try:
    # some bad code
except (User.DoesnotExist, SomeOtherException):
    # error handling code


参考
1。 Python: One Try Multiple Except