2017-01-19 12 views
-1

私は、サンプルコードBottlepyリターン出力昇給HTTPResponseはもし、しかし昇給テンプレート

from bottle import HTTPResponse, run, route, template 

@route('/') 
def hello_world(): 
    raise HTTPResponse(body='test', status=200) 

@route('/test') 
def test(): 
    raise template('<b>Hello {{name}}</b>!', name='World') 

run(host='localhost', port=9999) 

を持っている場合raiseがデータを返すために、適切な方法ではありませんが、私が知っているエラーを与えます。しかし、私はこのコードを準備してあり、それを使う必要があります。

私が知りたいのは、私がraise HTTPResponseのときは動作しますが、試してみるとエラーが出ます。raise template

raiseをアプリケーションで使用しないようにするにはどうすればよいですか、私が納得したことは何ですか?

raise HTTPResponsereturn HTTPResponseの違いは何ですか?

答えて

1

raiseは、排他的に例外を生成するために使用され、したがって、BaseExceptionクラスから継承されたオブジェクトが必要です。

「HTTPResponse」と「ではないため、例外はありません。不正な操作でエラーが発生します。

基本的には、raiseは例外です。スタックをキャッチしたりパスするためにエラーをトリガーしない限り、使用しないでください。

+0

感謝しますが、 'raise'は' raise'で 'BaseException'の'非サブクラス 'を使用するとエラーになりませんか? – Nilesh

+0

@Lafada正直言って、私はあなたのコメントが何を求めているか全く分かりません。しかし、私の答えの全体的なポイントは、 'raise'はここで使うのは完全に不適切だということです。' HttpResponse'や 'template'を' raise 'するために回避策を作ることは狂気です。 ** raise **を使用する必要があると思われる理由がある場合は、あなたの質問を編集して、それを含めてください(おそらくXY問題です)(http://meta.stackexchange.com/questions/66377/何が問題なのか)。 – user3351605

+0

申し訳ありませんが、これがあなたを混乱させるなら、私は 'raise'ではなく私ができることをチェックします。私は完全に同意します。私は 'raise'ではなく' return'を使用しなければなりません。 – Nilesh

関連する問題