python - 为什么这段代码没有异常抛出?
天蓬老师
天蓬老师 2017-04-18 10:28:05
0
2
504
In [8]: def bar():
   ...:     a = 10
   ...:     try:
   ...:         raise
   ...:     except:
   ...:         try:
   ...:             raise
   ...:         except:
   ...:             raise
   ...:     finally:
   ...:         return a


In [9]: bar()
Out[9]: 10
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全員に返信(2)
Peter_Zhu

これは非常に興味深いので、最初にいくつかのコードを実行してみましょう

1. このコードは、try の層が何層あるかを気にする必要がないことを意味します。実際には、
を除いて例外がスローされない理由を理解するだけで済みます。 リーリー
2. このコードは、finally に return ステートメントがある場合は例外がスローされず、return がない場合は例外がスローされることを意味します
リーリー
3. 調べてみると、ついに Python を深く理解するためのこの記事が見つかりました。

f() が例外をスローした後、excel で return を実行するようですが、呼び出し元には戻らず、finally でコードの実行を「持続」します。この時点で、finally の本当の意味がようやく理解できました。つまり、return が行われても、finally 内のコードは実行されなければならないということです。

ここで、try に exit メソッドを必要とするステートメントがある場合、finally に return メソッドがある場合はすぐに戻り、前の exit ステートメントは実行されないことも理解できます。
現時点では、このコード文字列を見てみましょう

リーリー
4. この時点で、ついに〜
についてもっと明確になりましたか?

今すぐ学び、今すぐ販売してください。間違いがある場合は、指摘して修正してください〜

いいねを押す +0
左手右手慢动作

最後に例外がスローされた場合、excel ステートメントは無駄ではありませんか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート