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()
メソッドに意図的に提供して、強制的に例外を発生させたためです。