こんにちわ!この記事はPythonの初学者のための内容となっております。
前回は、変数の有効範囲(スコープ)について学習しました。
スコープを上手に活用することで、プログラムの可読性も良くなることがわかりました。
【Python入門】初めてのプログラミング(スコープと関数)
前回の記事
今回は、例外処理というものを学習していきます。難しそうな内容ですが、とても便利な概念ですので、ぜひともマスターしたい内容となっています。
コンテンツ
プログラミングスクールに関しては下の記事で詳しく記述しています。
こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。
Let’s practice a little!!

どんな例外があるのか
そもそも例外ってどんなのがあるのかなぁ!
それでは早速例を見てみよう!
一番わかりやすいのは配列の要素番号の例外だね!
| 
					 1 2 3 4  | 
						a = [1, 2, 3, 4, 5] print(a[5]) #IndexError  | 
					
この例では、「IndexError」と出力されます。
原因は添え字のミスですね。
なぜこれでエラーが出てしまうのかが理解できない方は過去の記事を参照してください。
Pythonで学ぶ初学者のための学習&問題(配列編)
過去の記事
ほかの例外もみていきましょう!
| 
					 1 2 3  | 
						a = 1 a += "愛" #TypeError  | 
					
この例では、「TypeError」と出力されます。
原因は型が合っていないためです。
エラーが出てしまう理由がわからない方はこちらを参照ください。
Pythonで学ぶ初学者のための学習&問題(変数編)
過去の記事
このようにたくさんの例外が存在しています。
これらの例外を処理できるようになるために例外処理の方法を学んでいきましょう!
例外処理の基本
例外処理の基本をみていこう!
| 
					 1 2 3 4  | 
						try:     #問題なく通常に実行される文 except (エラー内容):     #例外発生時に実行される文  | 
					
これが基本的構文です。ほかの言語だと「try-catch」文ともいわれますね。
この構文の前半部分で、通常に実行される文を、後半部分で例外発生時に実行される文を記述します。
エラー内容というのは、先ほどの「IndexError」や「TypeError」などです。
それでは実際に例外処理の記述例をみていこう!
| 
					 1 2 3 4 5 6 7 8  | 
						a = [i for i in range(5)] try:     print(a[5]) except IndexError:     print("indexエラーです。") #indexエラーです。  | 
					
この場合、例外が起こったため、「except」文の中が実行されました。
例外処理の基本は大丈夫でしょうか?
いけるぜ!
Let’s practice more!!

複数の例外処理キャッチ
例外処理では、複数の例外をキャッチすることも可能です。記述例は以下の通りです。
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						a = [i for i in range(5)] try:     a = [int(i) / 0 for i in a] except IndexError:     print("indexエラーです。") except ZeroDivisionError:     print("0で割ることはできません。") #0で割ることはできません。  | 
					
補足ですが、複数の例外が起こった場合は、最初にキャッチされる例外の中を実行されるようになっています。そのため、先に「IndexError」が起こっていてかつ、「ZeroDivisionError」も該当する場合、前者の「IndexError」のみ実行されますので注意が必要です。
また、この例の中では、「ZeroDivisionError」というのがありますが、これは、0で除算できないという数学的な問題をキャッチするための例外となっています。
全知全能の例外処理
ただ、例外処理を記述しているときでも、どんな例外が起こるのかわからない。もしくは、どんな例外が起こっているのか知りたいなど、予測できないことを記述するのは難しい部分があります。このようなときに便利な全知全能の例外処理を見てみましょう。
| 
					 1 2 3 4 5 6  | 
						try:     ぴえん except Exception as e:     print(e) #name 'ぴえん' is not defined  | 
					
どうやら「ぴえん」はエラーが出るようだね!
このように、エラー内容が予測できない場合でも、どういったエラーが起こっているのかを知ることが出来るのも「Exception」の便利なところです。この構文の意味は、エラー内容を「e」とし、そのエラーを出力するといったことを実行しています。この書き方は、「import」文とも似ていますね!エラーメッセージの通り、今回出ている例外は、「ぴえんは定義されていない」ということです。わかりやすいですね!
Today’s final practice!!

まとめ
今回の記事では、例外処理について書きました。次回はもう少し学びたい人向けにより深く書いた内容を書きます。例外処理において、「except」文の中身を空白にしてしまうと、せっかく例外処理をしているのに、どういったエラーが起こっているのかがわからなくなってしまいます。このようなことを避けるためにも最低限エラーメッセージなどは記述しておきましょう。
本日の理解度調査
今日の最後に理解度調査をします!!
どうすれば正しくなるのか考えてみてね!!
Q. 次の例外処理関数を完成させよ。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14  | 
						def Error(x):     a = 1     try:         a += x         print(a)     except ???:  #ここに入れる式はなにかな?         print("型が違います。") Error(1) #2 Error("1") #型が違います。  | 
					

正解は。。。
| 
					 1  | 
						except TypeError:  | 
					
わかったかな??正解出来たら今回の項目は完璧だね!!
				ナノトイラボ	
