上のコードでは
a = 1
の後
a + A
を実行しようとしている。つまり
1 + A
なのだが、数字と文字は足し算できないのでエラーになる。
try中にエラーが出るとexceptへすぐさま移動する
1.エラー名とは?
エラーが起きてプログラムが止まった時、コンソール画面に
Traceback (most recent call last):
File "C:\Users\Valley\Documents\MyProject_XP\python\pyMakeHtmls\test.py", line 27, in
print(a + 'A')
TypeError: unsupported operand type(s) for +: 'int' and 'str'
のように出るのだが一番下の行の頭の
TypeError
というのがエラーの名前で、これをexcept直後に入れる名前。
コンソール画面からコピーペーストしてコードにいれればいい。
2.使い道
引数やプログラムコード以外に何か読む混む値があるとき
たとえばウェブ上の文章をプログラム中に読み込んだ時に
特定の文字を読み込んだ時にだけエラーが発生する、というような場合がある
このような場合はコードに問題がなくてもエラーが発生するかもしれないので
エラーの種類があらかじめわかっていれば
try exceptを使ってそのエラーが起きてもプログラムを最後まで実行できる
try exceptで処理できるエラーはexcept直後に書かれたエラーのみで
当然それ以外のエラーがtry内で起きた場合は対処できない。
複数のエラーに対応したければその分exceptを増やせばよい
a = 1
b = '\u26C4'
try:
writer = open('test.txt','w')
writer.write(b)
writer.close()
print(a + 'A')
print('tryを通りました')
except TypeError:
print('exceptを通りました')
except UnicodeEncodeError:
print('except2を通りました')
print('その後ここに来ます')
出力は
except2を通りました
その後ここに来ます
これはtry中に2回エラーが起こっている。最初は
writer.write(b)
で書き込めない文字をtest.txtに書き込もうとしているし、次に
print(a + 'A')
で数字と文字を足そうとしている
ここでは最初にテキストに書き込もうとするエラーが発生したので
except2を通りました、のほうに移動している