ユーザ定義例外
 例外を発生
 複数例外の指定
 try文のelse
 複数のexcept
 try文

 機能・要件
 タスク
 ライブラリ
 導入
 Sample
 Error
 基礎他

 ユーザ定義例外クラス
 ・Exceptionクラスを継承し独自の例外クラス(ユーザ定義例外)を作成できる。
 ・予め定義された例外クラスと同様に例外処理の対象にできる。
暗黙的に発生する例外と同様に扱うことができる。
 class NotPositiveNumberError(Exception):    pass
 例外を発生させる
 ・raise 文は例外クラスのインスタンスを指定して明示的に例外を発生
 ・raise文により発生した例外オブジェクト
exceptブロックで捕捉させることができる。
暗黙的に発生する例外と同様に扱うことができる。
 try:    num = input('xxxx:')    num = int(num)    share = xxxx / num    if num < 0:   (入力値が負の数の場合、例外を発生)      raise NotPositiveNumberError  except ZeroDivisionError:    print('xxxx')  except ValueError:    print('xxxx')  except NotPositiveNumberError: (引数がない場合は括弧は省略)    print('xxxx')  else:    print('xxxx')
 複数例外の指定
 ・種類の異なる例外であっても、捕捉時の処理は同一としたい場合
同一の例外処理を行う例外が複数ある場合
単一のexcept節で複数の例外クラスを指定することで処理できる。

 try 文の else 節 と finally
 ・else節はtry節で全く例外が発生しなかったときに実行される。
 ・finally節は例外が発生したかどうかに関わらずtry文を抜ける前に常に実行

 複数のexceptブロック
 ・tryブロックの中で複数の種類の例外が発生する可能性がある場合
複数のexceptブロックを記述
例外クラスの種類に応じた処理ができる。
 ・発生した例外オブジェクトが複数のexceptで補足できる場合
最初に記述されたexceptブロックのみで補足される。

 try文
 ・例外が発生した際、例外を捕捉してそれに対する処理を行う。
tryブロックで例外が発生するとその時点でtryブロックの処理が中断
exceptブロックに処理が移る。
 ・tryブロック
例外が発生する可能性がある処理をtryブロックで囲む。
 ・catchブロック
捕捉する例外の型を記述し補足した例外に対する処理をブロックに記述
 try:    例外が発生する可能性のある処理  except (例外クラス名[, 例外クラス名] [, ...]):    捕捉した例外に対する処理  else:    try節で例外が発生しなかった時の処理(省略可)  finally:    try節で例外が発生したかどうかに関わらず常に実行される処理(省略可)