gpt4 book ai didi

Python:想捕获异常,但不知道它来自哪里?

转载 作者:行者123 更新时间:2023-11-28 22:51:09 25 4
gpt4 key购买 nike

我正在使用 Django 教程学习 Python,并且我有这段代码

poll = Poll.objects.get(pk = poll_id)

当 poll_id 不在数据库中时,我得到一个 DoesNotExist 异常,这很好,因为教程告诉我执行以下操作:

try:
poll = Poll.objects.get(pk = poll_id)
except Poll.DoesNotExist:
raise Http404

我的问题是:如果我没有教程来帮助我,根据下面的堆栈跟踪,我怎么知道 DoesNotExist 异常是 Poll 的一部分?

(即我的猜测是放置“except 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:想捕获异常,但不知道它来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21918076/

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