2013-11-28 16 views
8

Belki de documentation'da bir şey görmüyorum.Balondaki tüm istisnalar nasıl engellenir?

Sadece bazı http hatalarını değil tüm özel durumları işlemek isterim. Nedeni - Ben kendi özel mantığı kullanarak onları kaydetmek istiyorum (tekerleği yeniden keşfetme gibi sesler duyuyorum, ancak günlüğe kaydetme konusunda tam kontrole ihtiyacım var. Bir istisna üzerine sunucuyu dizlerine getirmemek istiyorum, ama sadece o özel talebi bombalamak istiyorum. .

Şu ana Flask başlatmak nasıl. Burada app.run sunucuyu başlatır. nasıl belgelerine http://flask.pocoo.org/docs/patterns/errorpages/#error-handlers bakın bir istisna Sen errorhandler kullanmalıyım?

def main(): 
    args = parse_args() 
    app.config['PROPAGATE_EXCEPTIONS'] = True 
    flask_options = {'port' : args.port} 
    if args.host == 'public': 
     flask_options['host'] = '0.0.0.0' 
    app.run(**flask_options) 

if __name__ == '__main__': 
    _sys.exit(main()) 

cevap

14

oluştuğunda benim istisna işleyicisi yöntemi çağırmak için talimat verebilirsiniz ve http://flask.pocoo.org/docs/api/#flask.Flask.errorhandler.Yöneticilerindeki tüm özel durumları almanıza izin verir, ancak hata işleyicilerindeki istisnaları işlemez. le tüm istisnalar:

@app.errorhandler(Exception) 
def all_exception_handler(error): 
    return 'Error', 500 

nasıl açık istisnalar işleyicileri tercih veya bu durumlar için dekoratörler (sınıf temelli görünümler) kullanmak hiç.

+2

Artık bu son sürümlerde çalışmıyor. 0.12'de tekrar HTML hata sayfaları alıyorum. – bwind

+0

@bwind Nasıl bir mantık, 0.12'de benzer mantığı nasıl uygulamalıdır? –

+0

@TuukkaMustonen: Evet, cevabı burada farklı bir soruya bakın: http://stackoverflow.com/questions/29332056/global-error-handler-for-any-exception/41655397#41655397 – bwind