Pythonで、存在しないバイナリファイルを開くと、プログラムはエラーで終了し、次のように出力されます。
Traceback (most recent call last):
File "C:\Python_tests\Exception_Handling\src\exception_handling.py",
line 4, in <module>
pkl_file = open('monitor.dat', 'rb')
IOError: [Errno 2] No such file or directory: 'monitor.dat'
次のように、「try-except」でこれを処理できます。
try:
pkl_file = open('monitor.dat', 'rb')
monitoring_pickle = pickle.load(pkl_file)
pkl_file.close()
except Exception:
print 'No such file or directory'
キャッチされた例外で、次の行を印刷するにはどうすればよいですか?
File "C:\Python_tests\Exception_Handling\src\exception_handling.py",
line 11, in <module>
pkl_file = open('monitor.dat', 'rb')
そのため、プログラムは終了しません。
これにより、例外メッセージが出力されます。
except Exception, e:
print "Couldn't do it: %s" % e
これにより、トレースバック全体が表示されます。
import traceback
# ...
except Exception, e:
traceback.print_exc()
ただし、例外をキャッチしたくない場合があります。一般的に、獲物をより狭くすることができれば、より良くなります。あなたは試してみたいかもしれません:
except IOError, e:
代わりに。また、例外処理を絞り込むというテーマで、欠落しているファイルのみを懸念している場合は、try-exceptをオープンの周りのみに配置します。
try:
pkl_file = open('monitor.dat', 'rb')
except IOError, e:
print 'No such file or directory: %s' % e
monitoring_pickle = pickle.load(pkl_file)
pkl_file.close()
例外によって渡された例外オブジェクトをキャプチャする場合は、Python 2.6(現在両方をサポート))で導入された新しい形式を使用することをお勧めします。 into Python 3。
そしてそれは:
try:
...
except IOError as e:
...
例:
try:
pkfile = open('monitor.dat', 'rb')
except IOError as e:
print 'Exception error is: %s' % e
詳細な概要は Python 2.6ドキュメント)の新機能 にあります。
Pythonには traceback モジュールがあります。
import traceback
try:
pkl_file = open('monitor.dat', 'rb')
monitoring_pickle = pickle.load(pkl_file)
pkl_file.close()
except IOError:
traceback.print_exc()
全てに感謝。
それは、私が必要なものです:)
import traceback
try:
# boom
except Exception:
print traceback.format_exc()