2016-10-29 2 views
0

は、次のコードを考えてみましょう:リターンと例外発生の間に違いはありますか?

def f(x): 
     if x < 10: 
      return Exception("error") 
     else: 
      raise Exception("error2") 

    if __name__ == "__main__": 
     try: 
      f(5)      # f(20) 
     except Exception: 
      print str(Exception) 

はどんな違いがありますか? 返品の例外を使用する時期はいつですか?

+4

'return'は何をしていますか?私は[公式のPythonチュートリアル](https://docs.python.org/3.5/tutorial/index.html)をお勧めします。 – TigerhawkT3

+1

この質問は、Python(そして一般的なプログラミング)の率直な基本概念についての妥当な量の研究を示していません。私はこれがStackOverflowへの貢献であるとは信じません。私は「あまりにも広すぎる」と結論づけています。 – Jules

+0

@Jules彼はもっと良い方法でそれを策定できたかもしれませんが、私はここの根元にleisという基本的な質問が良いものだと思います。したがって、この質問はマイナススコアIMOに値するものではありません。 – Elmex80s

答えて

7

raisereturnは、本質的に異なる2つのキーワードです。一般的に他の言語でthrowとして知ら


raise、呼び出しスタックの電流レベルでエラーを生成します。 tryでエラーが発生する可能性のある領域をカバーし、そのエラーを処理することによって、発生したエラーをキャッチすることができます。except。一方、

try: 
    if something_bad: 
     raise generate_exception() 
except CertainException, e: 
    do_something_to_handle_exception(e) 

return、関数が呼び出された場所に値を返すため、例外そのものではないので、例外を返すことは、通常、あなたがこのような状況で探している機能ではありませんexceptをトリガーするものは、代わりにraiseが例外をトリガーするものです。