0
3

More than 1 year has passed since last update.

プログラミング1年生のPythonメモ②~例外と例外処理~

Last updated at Posted at 2022-07-05

はじめに

:hatching_chick::hatching_chick::hatching_chick:
こんにちは。
文系出身のシステムエンジニア1年生です。
(いつの間にか入社2年目になってしまいましたが、気持ちが1年目なので1年生です。)

さて、前回の記事では「エラーには2種類ある」という話をしていました。
プログラミング1年生のPythonメモ①~エラーの種類~

間違ったプログラムを動かそうすると発生するエラー。
これらは大きく2つの種類に分けることが出来ます。
一つはそもそも動かない(動かすことが出来ない)もの。
もう一つは動くけれど途中で止まってしまうものです。
一般的に前者はエラー(構文エラー)、後者は例外と呼ばれます。

今回は後者である「例外」について取り上げてみようと思います。

例外とは

構文ミスなどによって、そもそも実行が出来ない構文エラー(Syntax Error)に対し、
動かすことは出来るが、途中で止まってしまうエラーのことを例外(exception)と呼びます。

処理が途中で止まってしまう原因としては、

  • ユーザの入力値が間違っている
  • 関数に指定された引数が渡されていない
  • ネットワーク等の環境によって処理が実行できない

…などが想定されます。

def add_5 (num):
    add_num = num + 5
    return add_num

例えば、もしこのような関数の引数(ここではnumのこと)に
数値の“10”ではなく、文字列(漢数字)の“十”を渡してしまうと
文字列 + 数値 は当然実行できないためエラーとなります。

構文自体は合っているのに、引数が想定と違う形で入力されてしまうと、
この関数の処理はここで停止してしまうのです。

こういったタイプのエラーを例外といいます。

そして、このような予期せぬエラー(例外)に出会ったとき、
そこでプログラムがが止まったままになってしまわないよう、
あらかじめコードを書いておいて対処してしまおう!というのが、次に紹介する例外処理です。

例外処理

例外処理とは、実行しているプログラムが何らかの理由でエラーとなった場合、
そこでの処理を一度中断して、別の箇所に記載された処理を行うことです。

これには様々な書き方があるようですが、
今回はひとまず、主な方法を2つだけ紹介したいと思います。(1年生ですし:hatching_chick:

try-except講文

例外処理の基本的な書き方の1つがtry-except講文です。

try-except構文
def add_5 (num):
    try:
        add_num = num + 5    #ここでエラーが起きれば…
        print(f"add_num is {add_num}")
        return add_num
    except:            #exceptブロックの処理へ移動!
        print("Error!!!")     #"Error!!!"と表示させる

例えば上記のプログラムなら、最初は順番通りtryブロックの処理を行いますが、
エラーが発生した場合はすぐにexceptブロックの処理へ移動します。
こうすることで、プログラムが途中で動かなくなってしまって終わり…という事態を回避できます。

if文

if文を使うことで、エラーを事前に回避するという方法もあります。

if文
def add_5 (num):
    if not instance(num, int):   #"もし整数じゃなかったら…"
        print ("入力値が無効です…") #コレを表示!
        return False
    add_num = num + 5        #本来やりたい処理↓↓↓
    print(f"add_num is {add_num}")
    return add_num

ここではisinstance関数※1を使って、numに入る値が整数かどうかを判断しています。
もし整数以外の値が入れば、“入力値が無効です…”と表示され、
整数であれば、本来の足し算処理が行われます。

このようにif文を使って、事前に入力値をチェックしてエラーを回避するという書き方もあります。

※1 isinstance関数…第1引数に取った変数が、第2引数のオブジェクトかを判定する関数。ここではnumが整数であるかどうかを判断している。

さいごに

今回は「例外」という種類のエラーと、それに対する「例外処理」について簡単にまとめてみました。
特に例外処理についてはまだまだ多くの書き方があり、複雑な処理を実行しようとすればするほど、関数や構文の組み合わせが必要になってくるようです。

とはいえひとまず、「例外?例外処理?とはなんぞや…」をざっくり知るにはこのくらいで…
ありがとうございました!

:hatching_chick::hatching_chick::hatching_chick:

0
3
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
0
3