Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの1つの例外ブロックで例外を発生させ、後の例外ブロックでそれをキャッチするにはどうすればよいですか?


tryブロック内の単一のexcept句のみが呼び出されます。例外をより高い位置でキャッチしたい場合は、ネストされたtryブロックを使用する必要があります。

2つの試行を書いてみましょう...このようなブロックを除いて:

try:
try:
1/0
except ArithmeticError as e:
if str(e) == "Zero division":
print ("thumbs up")
else:
raise
except Exception as err:
print ("thumbs down")
raise err

次の出力が得られます

thumbs down
Traceback (most recent call last):
File "C:/Users/TutorialsPoint1/~.py", line 11, in <module>
raise err
File "C:/Users/TutorialsPoint1/~.py", line 3, in <module>
1/0
ZeroDivisionError: division by zero

Pythonチュートリアルによると、1つのtryステートメントごとに1つだけのキャッチまたはキャッチされた例外があります。


  1. Pythonのステートメントを除いて、最後にtryを説明します。

    Pythonでの例外処理では、tryステートメントとexceptステートメントを使用して、例外をキャッチして処理します。 try句内のコードは、ステートメントごとに実行されます。 例外が発生した場合、残りのtryブロックはスキップされ、except句が実行されます。 例 try: 'apple' + 6 except Exception: print "Cannot concatenate 'str' and 'int' objects" 出力 Cannot concatenate 'str' and '

  2. 例外を無視してPythonで続行するにはどうすればよいですか?

    次の方法で例外を処理せずにtry-exceptブロックを実行できます。 try: 1/0 except: pass および try: 1/0 except Exception: pass 最初のケースでは、bareexcept:を使用することは、except BaseException:を使用することと似ています。これは、exceptions.Exceptionではなくexceptions.BaseExceptionから直接派生するKeyboardInterrupt、SystemExit、およびそのようなエラーもキャッチします。 2番目のケースでは、上記のものはキャッチされません。 pa