LoginSignup
1
1

More than 3 years have passed since last update.

プログラミングの例外処理について(python)

Last updated at Posted at 2019-06-20

エラーについて

大まかに分けると、
・構文エラー
・例外
になるかと。

構文エラーは文法ミスやスペルミスなど、
いわゆるSyntaxErrorです。

例外は、TypeError、
ZeroDivisionError、NameError、など
文法的には正しいけれど実行の際に
起きるエラーの事を例外と言うそう。
例) a = "Hello"
print (a/2)
このコードではTypeErrorが起きる。
aの値はstring型なので計算では使えません。

ZeroDivisionErrorは簡単に言うと
『0で何かを割る事』が数学では
出来ないので起きるエラー。
例) 5/0
Traceback (most recent call last):
File "", line 1, in
ZeroDivisionError: division by zero
こんな感じでエラーが起きる。

NameErrorは定義していない
変数を使う事で起きるみたい。

例外処理はtry-except文を使おう!

基本文法は、

try:
例外が発生するかもしれないが、 実行したい処理。
except エラー名:
例外発生時に行う処理

tryの中に指定された処理が実行され、
例外が発生しなければ、
except文はスキップされる。

そして、try実行中にexceptキーワードの
後に指定したエラー名と
一致する例外が発生すると、
except文が実行され、それ以降に
記述された処理も実行される。

例=================

x = 1
y = 0

try:
z = x / y
except ZeroDivisionError:
print('こんばんは!')

print('Hello world!')

=======================

(結果)
$ こんばんは!
$ Hello world!

こんな感じ。本来なら『z = x / y』で
エラーが起きてしまうが、

予めZeroDivisionErrorを
例外として捉えている事で
エラー発生箇所で処理が停止することがなくなる。

また、例外が発生しなかった場合に
行う処理を明記する場合は
「else」ブロックを使用し、
例外の発生に関わらず必ず処理を
行いたい場合は「finally」ブロックを
使用する。

======================

x = 4
y = 2

try:
z = x / y
except:
print('例外発生!ゼロで
割ることはできません')
else:
print('例外は発生しませんでした。')
finally:
print('実行が終了しました')

========================

このばあい、エラーは起きないので

$ 例外は発生しませんでした。

と、どちらでも実行されるfinallyブロックの
$ 実行が終了しました

が出力される

終わり

故意にエラーを走らせる『raise』ブロックというのもある。
どんな時に使うのだろう。。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1