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


今回はプログラミングにつきもののエラーについて見ていきます。
エラーとはなんでしょうか?バグとはちょっと違います。想定外に関して働くもの、それがエラーです。
例えば、割り算は「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(テックアカデミー)ですね。
- オンラインで選抜された現役エンジニアから学ぶことができる
- 自宅からWeb制作・プログラミング・アプリ開発など幅広い分野を学べる
- 学ぶだけではなく、転職の支援、副業に活かせるスキルの習得、副業の仕事紹介まで行っている

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