Python学習ノート(18):異常処理
目次 異常概念 2異常の書き方 3特定異常をキャプチャ 4複数の指定例外 をキャプチャする.4印刷異常情報 5すべての例外をキャプチャ else文 6 finally文 7カスタム例外
1異常概念
1つのエラーが検出されると、解釈器は法を無視して実行し続け、逆例えば、存在しないデバイスをr方式で開く.
2異常な書き方
例外の構文は、exceptがすべての例外をキャプチャし、例外が発生するとexcept内の文が実行されることに相当します.
例えば、rアクセスモードでtxtファイルを読み出して異常が発生した場合、異常処理によりwアクセスモードでtxtファイルを読み出すように変更することができる.
3指定された例外の取得
文法は以下の通りです.
名前のない変数numを印刷してNameError例外を生成し、受信することができます.
4指定された複数の例外の取得
4異常情報の印刷
複数の異常をキャプチャし、どの異常が発生したのか分からない場合があります.この場合、異常情報を印刷することで判断できます.
5すべての例外をキャプチャ
すべてのプログラム例外クラスの親クラスExceptionですべての例外をキャプチャできます.
5 else文
異常が発生しない場合、プログラムはelseの文を実行します.異常なキャプチャ(およびexcept文が存在する)が行われている場合にのみ、else文を書くとエラーが発生しません.
6 finally文
finallyは、例外がないかどうかを問わず実行するコードを表します.たとえば、デバイスを閉じることです.
7カスタム例外
例外をカスタマイズする方法を一例で体験できます.プログラムの開始時にユーザに一連のパスワードを入力するように要求し,パスワードの長さが3未満であればカスタムの異常を投げ出す.カスタム例外を実装する必要があります_init__メソッドと_str__メソッドは、異常情報の初期化と印刷にそれぞれ使用されます.
1異常概念
1つのエラーが検出されると、解釈器は法を無視して実行し続け、逆例えば、存在しないデバイスをr方式で開く.
f=open('test.txt','r')
Traceback (most recent call last):
File "E:01 .py", line 4, in <module>
f=open('test.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
2異常な書き方
例外の構文は、exceptがすべての例外をキャプチャし、例外が発生するとexcept内の文が実行されることに相当します.
try:
except:
例えば、rアクセスモードでtxtファイルを読み出して異常が発生した場合、異常処理によりwアクセスモードでtxtファイルを読み出すように変更することができる.
try:
f=open('test.txt','r')
# , except
except:
f=open('test.txt','w')
3指定された例外の取得
文法は以下の通りです.
try:
except :
名前のない変数numを印刷してNameError例外を生成し、受信することができます.
try:
print(num)
except NameError:
print(" ")
except:
print(" ")
4指定された複数の例外の取得
try:
print(1/0)
except (NameError,ZeroDivisionError) :
print(" ")
except:
print(" ")
4異常情報の印刷
複数の異常をキャプチャし、どの異常が発生したのか分からない場合があります.この場合、異常情報を印刷することで判断できます.
try:
print(num)
#
except (NameError,ZeroDivisionError) as result:
print(result)
except:
print(" ")
name 'num' is not defined
5すべての例外をキャプチャ
すべてのプログラム例外クラスの親クラスExceptionですべての例外をキャプチャできます.
try:
print(1/0)
except Exception as result:
print(result)
print(" ")
division by zero
5 else文
異常が発生しない場合、プログラムはelseの文を実行します.異常なキャプチャ(およびexcept文が存在する)が行われている場合にのみ、else文を書くとエラーが発生しません.
try:
print("hello")
#
except Exception as result:
print(result)
# else
#
else:
print(" ")
hello
6 finally文
finallyは、例外がないかどうかを問わず実行するコードを表します.たとえば、デバイスを閉じることです.
try:
f=open('test.txt','r')
except Exception as result:
print(result)
f=open('test.txt','w')
finally:
f.close()
7カスタム例外
例外をカスタマイズする方法を一例で体験できます.プログラムの開始時にユーザに一連のパスワードを入力するように要求し,パスワードの長さが3未満であればカスタムの異常を投げ出す.カスタム例外を実装する必要があります_init__メソッドと_str__メソッドは、異常情報の初期化と印刷にそれぞれ使用されます.
class ShortNameException(Exception):
def __init__(self,length,minLen):
self.length=length
self.minLen=minLen
def __str__(self):
return f' {
self.length}, {
self.minLen}'
try:
code=input("
")
if(len(code)<3):
raise ShortNameException(len(code),3)
except ShortNameException as result:
print(result)
finally:
print(" ")
23
2, 3