Python:想捕获异常,但不知道异常来自何处?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python:想捕获异常,但不知道异常来自何处?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2202字,纯文字阅读大概需要4分钟。
内容图文
![Python:想捕获异常,但不知道异常来自何处?](/upload/InfoBanner/zyjiaocheng/693/87decafdf5f14d2fb9197732552d48e0.jpg)
我正在使用Django教程学习Python,并且我有这段代码
poll = Poll.objects.get(pk = poll_id)
当poll_id不在数据库中时,我会收到一个DidNotExist异常,这很好,因为该教程告诉我执行以下操作:
try:
poll = Poll.objects.get(pk = poll_id)
except Poll.DoesNotExist:
raise Http404
我的问题是:如果我没有该教程来帮助我,考虑到下面的堆栈跟踪,我将如何知道DidNotExist异常是Poll的一部分?
(即我的猜测是放’DoesNotExist:除外,这将告诉我:“全局名称’DoesNotExist’未定义”)
Request Method: GET
Request URL: http://127.0.0.1:8000/polls/3/
Django Version: 1.6.2
Python Version: 2.7.2
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')
Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/tom/Documents/dev/django-test/mysite/polls/views.py" in detail
26. poll = Poll.objects.get(pk = poll_id)
File "/Library/Python/2.7/site-packages/django/db/models/manager.py" in get
151. return self.get_queryset().get(*args, **kwargs)
File "/Library/Python/2.7/site-packages/django/db/models/query.py" in get
307. self.model._meta.object_name)
Exception Type: DoesNotExist at /polls/3/
Exception Value: Poll matching query does not exist.
完全是python新手.我显然缺少明显的东西.
解决方法:
你不会知道的;您必须查看project documentation或引发异常的代码.
请注意,Model.DoesNotExist引用是一种便利,因此您也不必导入异常.您不会从引发异常的代码中推断出这一点.这个特殊的Django异常对象是每个模型自定义的django.core.exceptions.ObjectDoesNotExist的子类.
通常,您可以捕获Exception并查看捕获到的异常的模块:
except Exception as e:
print type(e), type(e).__module__
这将告诉您在其中定义了异常的模块,从而可以选择将来从那里导入它.
内容总结
以上是互联网集市为您收集整理的Python:想捕获异常,但不知道异常来自何处?全部内容,希望文章能够帮你解决Python:想捕获异常,但不知道异常来自何处?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。