在 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 可能会让我失望......
更新
确实,正如评论中提到的,当我问这个问题时,我似乎闭上了眼睛……
我认为让我感到震惊的是,如果提供了错误的用户名/密码,则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()
方法的用户名参数,以强制引发异常。