Pythonスクリプトを実行すると、通常の動作、ミスが起こり、戻り値の間違った種類が情報を与えられたとき、我々はそれが返され、エラーのタイプに適切な文を実行することができ、エラーの種類は以下のような、多くのです:とValueError、TypeError例外、NameError、 ZeroDivisionError .....
1を除く/してみてください
単純な構文に、次のように:
while True:
try:
x = int(input('请输入一个数字:'))
break
except ValueError:
print('您输入的不是一个数字,请再次尝试!')
次のように実行結果は以下のとおりです。
请输入一个数字:d
您输入的不是一个数字,请再次尝试!
请输入一个数字:3
次のように文の作品を試してみてください。
- まず、try節(TRY間やキーワードを除く文)。
- 例外が発生した場合は、except節は無視され、実行の終了後に句を試してみてください。
- 例外はtry節の実行中に発生した場合は、try節の残りの部分は、例外タイプが定義された例外の同じタイプであれば後に無視され、キーワードの下句が実行されます除き、除きます。
- 例外は除いていずれも一致しない場合は、例外は、tryの上部に渡されます。
try文は異なる特定の例外に対処するために、except節1以上含まれていますが、多くても1つの分岐が実行されますを除いて。
- 唯一の例外処理ではなく、他の試みで例外ハンドラを対応するtry節のハンドラ。
句以外の例外を複数扱うことができるタプル、栗は、次のように括弧内にあります。
except (RuntimeError,TypeError,NameError,ValueError):
pass
注意:任意のステートメントを実行しないこの例外を無視して渡します。
except節の最後には、例外の名前を無視することがあり、それがワイルドカードとして扱われます。栗次のように:
try:
f = open('myfile.txt')
s = f.readline()
i = int(s.strip())
except OSError as err:
print("OS error: {0}".format(err))
except ValueError:
print("不能将数据转换为整数类型!")
except:
pass
2、を除く/他のtry /
文は、オプションのelse節を持っている以外この句を使用する場合、句以外のすべてに配置する必要があります任意の異常がtry節では発生していない時に試した後に/、、else節が実行されます。
構文は次のとおりです。
try:
#正常执行的代码块
except 异常类型:
#发生异常时执行的代码块
else:
# 没有异常时执行的代码块
栗次のように:
while True:
try:
x = int(input('请输入一个数字:'))
# break
except (ValueError,NameError,Exception):
print("您输入的不是数字!")
else:
print('用户输入完毕!')
try節内のすべての文よりもelse節は、いくつかの予想外のを避けるため、彼らは例外をキャプチャすることはできません除く外方が良いです。
これらの例外は、try節で直接発生するだけでなく、句機能(たとえ間接的な関数呼び出し)呼び出しのスロー、栗、次のように対処するために例外処理だけで対処していません。
try:
this_fails()
except ZeroDivisionError as err:
print('Handling run-time error:', err)
上記栗で、誤差関数入力した場合:ZeroDivisionError、次の出力:
Handling run-time error:err
3、最後に/してみてください
最終的に文は関係なく、コードのかどうか、最終的な実行の発生します/してみてください。
構文:
try:
#正常执行的代码块
except 异常类型:
#发生异常时执行的代码块
else:
#没有异常时执行的代码块
finally:
#不管有没有异常都会执行的代码块
例としては、次のとおりです:
while True:
try:
x = int(input('请输入一个数字:'))
# break
except (ValueError,NameError,Exception):
print("您输入的不是数字!")
else:
print('用户输入完毕!')
finally:
print("这句话,无论异常是否发生都会执行。")