【发布时间】:2014-08-01 16:12:09
【问题描述】:
在Python中,try/except如何实例化一个类?
例如,我目前正在编写一个 GitHub 脚本:
from github3 import login
user = login(username, password)
起初,我认为这很简单:
try:
user = login(username, password)
except Exception, e:
print e
但是,如果我强制异常(例如,提供错误的参数),那么我看不到任何异常:
$ python my-script.py -u 1 -p 1; echo $?
name 'pw' is not defined
0
如果我再试一次,但将 try/except 排除在外,我会得到我希望看到的异常:
$ python my-script.py -u username -p password; echo $?
Traceback (most recent call last):
File "delete-all-gists.py", line 19, in <module>
user = login(u, pw)
NameError: name 'pw' is not defined
1
我不可能是唯一一个被问到这个问题的人,但我担心我的 SO-search-fu 可能会让我失望......
更新
确实,正如cmets中提到的那样,我在问这个问题时似乎已经闭上了眼睛......
我认为,如果提供了错误的用户名/密码,github3 的 login() 方法不会引发任何异常。例如:
from github3 import login
u = 'foo'
p = 'bar'
try:
user = login(u, p)
except Exception, e:
print e
返回:
什么都没有。没有错误、异常或任何东西。
但是,正如预期的那样,以下确实引发了异常:
from github3 import login
u = 'foo'
p = 'bar'
try:
user = login(username, p)
except Exception, e:
print e
返回:
name 'username' is not defined
这当然是因为我故意提供了一个不存在的变量作为login() 方法的用户名参数来强制引发异常。
【问题讨论】:
-
您正在捕获所有异常,您希望发生什么?
-
错误信息 (
'name 'pw' is not defined') 被打印出来了,你还期待什么?! -
是的,你发现了它
print e=name 'pw' is not defined。 -
是的,看来我已经发出了嘘声。谢谢。
-
您更新的问题似乎更多地是关于 GitHub 的模块而不是您的标题。你怎么知道它没有抛出异常?当您提供无效凭据时,
user会发生什么?您应该对此进行测试。
标签: python oop try-except