*当ブログではアフェリエイト広告を利用しています。

python

【Python】0で割り算すると?エラーをtryで捕まえる!

momeq
モー
モー

今回はプログラミングにつきもののエラーについて見ていきます。

エラーとはなんでしょうか?バグとはちょっと違います。想定外に関して働くもの、それがエラーです。

例えば、割り算は「0」で割ることはできません。「0」で割ろうとすると、pythonはエラーを返します。

また、数字と文字は計算できません。

もちろん作っている人はこんなことわかりますが、使う人はどうでしょうか?計算できる関数に誤って文字やリストを入れてしまったり、「0」を入れてしまったりと。。。

様々な人が使うプログラムだからこそ、いろいろなことを想定してエラーにも対応した関数は作らなければいけません。

今回は、そんな内容について、簡単に見ていきます。

この記事で学べること
  • エラーとは何なのか?
  • エラーが起きるとどうなるのか?
  • エラーの正しい対処法と活用方法

「0」で割り算すると?

モー
モー

まずは、「0」で割り算をしてみます。


x = 10 / 0

>> 例外が発生しました: ZeroDivisionError
ニャー
ニャー

「ZeroDivisionError」というエラーを返したんだにゃ。エラーが起きるとプログラム自体が止まってしまうから、全体に影響が出てしまうんだにゃ。

エラーを掴んで適切に処置する

モー
モー

では、エラーが発生するときはどうすべきでしょうか?それは、きちんと処理するように分岐を作る必要があります。

ニャー
ニャー

try~except構文でエラーを捕まえれば、エラー処理にならず、きちんと終わらせることができるんだにゃ。

try:
    x = 10 / 0
except:
    print('Error')
>> Error
モー
モー

上の例では、エラーがあった場合「Error」と表示してプログラムが正常終了します。下の場合は、「ZeroDivisionError」の時だけ、正常終了するようになりますね。

try:
    x = 10 / 0
except ZeroDivisionError:
    print('ゼロでは割れません。')
>> ゼロでは割れません。
ニャー
ニャー

エラーはいろいろな種類があるんだにゃ。エラーごとに処理を変えることもできるんだにゃ。

実際に関数に実装してみる。

モー
モー

では、実際に割り算をする関数にtry構文を入れてエラーを捕まえてみます。try~exceptの他に、正常終了時に分岐するelse、どんな時でも表示するfinallyも入れて見ました。

def divided_machine(x, y):
    try:
        print(x / y)
    except ZeroDivisionError:
        print("ゼロでは割れません。")
    else:
        print("正常に計算が終了したよ。")
    finally:
        print("関数終了!")

divided_machine(10, 5)
>> 2.0
   正常に計算が終了したよ。
   関数終了!
divided_machine(10, 0)
>> ゼロでは割れません。
   関数終了!
ニャー
ニャー

上に例では、引数に「0」があると、エラーを捕まえられるんだにゃ。

でも、下の例だと、文字があるときに今度は「TypeError」が生じてしまいますね。

def divided_machine(x, y):
    try:
        print(x / y)
    except ZeroDivisionError:
        print("ゼロでは割れません。")
    else:
        print("正常に計算が終了したよ。")
    finally:
        print("関数終了!")

divided_machine(10, "数字")
>> 例外が発生しました: TypeError
モー
モー

そこで、「TypeError」のためのexceptも準備しておくことで、エラーを捕まえることができます。


def divided_machine(x, y):
    try:
        print(x / y)
    except ZeroDivisionError:
        print("ゼロでは割れません。")
    except TypeError:
        print("数字を入れて!")
    else:
        print("正常に計算が終了したよ。")
    finally:
        print("関数終了!")

divided_machine(10, "数字")
>> 数字を入れて!
   関数終了!
モー
モー

エラーはたくさんあるので、エラーの種類に合わせて、exceptを上手に使って見てくださいね。

よくあるエラー

・SyntaxError
・IndentationError
・NameError
・TypeError
・ValueError
・AttributeError
・IndexError
・KeyError
・ModuleNotFoundError
・ZeroDivisionError

ニャー
ニャー

今回は、エラーの対応だけだったけど、うまく使うとエラーをわざと起こさせて分岐させることもできるんだにゃ。上手に使って、正しくエラーと向き合って欲しいんだにゃ。

プログラミングを学ぶならTechAcademy(テックアカデミー)がおすすめ!

TechAcademy [テックアカデミー]

モー
モー

独学で苦戦している人は、一度しっかりと基礎を学ぶと次のステップへ進めますよ。今のおすすめは、TechAcademy(テックアカデミー)ですね。

TechAcademyのおすすめポイント
  • オンラインで選抜された現役エンジニアから学ぶことができる
  • 自宅からWeb制作・プログラミング・アプリ開発など幅広い分野を学べる
  • 学ぶだけではなく、転職の支援、副業に活かせるスキルの習得、副業の仕事紹介まで行っている
ニャー
ニャー

無料体験や相談もあるから、一度試してみてもいいんだにゃ!

\無料体験、無料相談はこちらから/



記事URLをコピーしました