3

私はここでPythonチュートリアルを読んでいますが、理解できないことが1つあります。ドキュメントから:

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except IOError:
        print 'cannot open', arg
    else:
        print arg, 'has', len(f.readlines()), 'lines'
        f.close()

ドキュメントの説明から:

else句を使用すると、try句にコードを追加するよりも優れています。これは、try...exceptステートメントによって保護されているコードによって発生しなかった例外を誤ってキャッチすることを回避するためです。

私の質問は、このtryブロックで発生しなかった例外を誤ってキャッチするのをどのように防ぐかということです。意味がわかりません。誰かが例をあげることができますか?

4

1 に答える 1

2

あなたが試みるかもしれない1つの可能な代替アプローチはこれです:

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
        print arg, 'has', len(f.readlines()), 'lines'
        f.close()
    except IOError:
        print 'cannot open', arg

f.readlines()ここで、またはの間に例外が発生した場合f.close()、それはexceptブロックによってキャッチされ、間違ったエラーメッセージ'cannot open'が表示されます。

于 2012-10-22T13:34:23.873 に答える