はじめに
Python3エンジニア認定基礎試験の対策として自分用に執筆しています。
この記事はPython・執筆学びたての初心者が執筆しています。間違いがあるかもしれませんので、ぜひ各項目にある参考文献も確認してください。また、誤りがあればコメントで教えていただけると幸いです。
エラーと例外
構文エラー
>>> while True print('Hello')
SyntaxError: invalid syntax
正しい構文で記述されていないとエラーを起こす。
今回だとwhile Trueの後ろに:
がないのでエラーとなる
例外
>>> 10 * (1/0)
ZeroDivisionError: division by zero
>>> 4 + spam*3
NameError: name 'spam' is not defined
>>> '2' + 2
TypeError: can only concatenate str (not "int")to str
発生した例外の組込み名が表示される。
例外処理
>>> while True:
... try:
... x = int(input())
... break
... except:
... print('Error!')
try
文は以下のように動く。
- try節が実行される
- 例外が発生しなければそのまま終わる
- 例外が発生すればその節の残りはスキップ、except節を実行する。
except (RuntimeError, TypeError, NameError):
pass
except ValueError as e:
print(e)
といったように複数の例外をキャッチすることもできる
また、else
文をつけることもできる。try
文でなにもエラーが起きなければ実行される節で、全てのexcept
節の後ろにつける。
例外を投げる
raise
文を使うと、特定の例外を発生させる。
>>> raise NameError('Hithere')
NameError: HiThere
raise
文の後ろに例外名を書かなければ例外が再創出させることができる
>>> try:
... raise NameError('HiThere')
... except NameError:
... print('Error!')
... raise
Error!
NameError: HiThere
クリーンアップ動作を定義
finally
節を定義すると、どんな状況でも必ず実行される節を加えることができる。
>>> try:
... raise KeyboardInterrupt
... finally:
... print('Goodbye, world!')
GoodBye, world!
KeyboardInterrupt
参考文献