2012-11-28 11 views
5

Spark Framework ile sapları alıyorum ve birden çok Rota için tek tip bir şekilde en iyi şekilde işleme yöntemlerini anlamaya çalışıyorum.Birden çok Rota için istisnalar nasıl yapılır

... 
catch (final Exception e) { 
    ... 
    response.status(418); 
    return e.getMessage(); 
} 
... 

Bu çok ağırlıklı istisna mantık aralarında yineleniyor, istenen bırakır: Şu anda

Ben çizgisinde tüm sap istisnalar Rotaları bir dizi var. Ben üstlenmeden geliştirilebilir biliyoruz ancak belirli bir istisnası atılır ne zaman bir eylem gerçekleştirebilir İlkbaharda ExceptionHandler mekanizması, örneğin benzer bir şey var acaba: Yani

@ExceptionHandler(Exception.class) 
public void handleException(final Exception e, final HttpServletRequest request) { 
    ...executed for the matching exception... 
} 

, orada bir İstisna yönetimi için kıvılcım mekanizması? Belgeleri kontrol ettim ve kısa yoldan geldim. Eğer yoksa, refactoring planlarım ile devam edeceğim. Teşekkürler.

+0

@ david99world [spark] etiketinin açıklamasının bu yeni kıvılcım çerçevesiyle ilgisi yoktur. Etiketin yeniden tanımlanması gerekiyor veya bunun için yeni bir etiket oluşturulmalı. –

+0

@ david99world Bir 'spark-framework' etiketi eklemeyi denedim, ancak yeterli desteği almadım, sanırım 1.5k gerekli dedi. – Jonathan

cevap

7

: Spark docs alınan

get("/throwexception", (request, response) -> { 
    throw new NotFoundException(); 
}); 

exception(NotFoundException.class, (e, request, response) -> { 
    response.status(404); 
    response.body("Resource not found"); 
}); 

Örnek.

0

Bu konuyla uğraşıyorum. Bu benim ortaya çıktığım şey. Ortamınıza göre ayarlamaya ihtiyaç duyacaktır. Sonra

public class ExceptionHandler extends MustacheTemplateHandler 
{ 
private final WrappedHandler inter; 

public abstract static class WrappedHandler 
{ 
    public abstract Object handle(Request req, Response res);  
} 

public static ExceptionHandler wrap(String path, WrappedHandler internal) 
{ 
    return new ExceptionHandler(path, internal); 
} 

private ExceptionHandler(String path, WrappedHandler internal) 
{ 
    super(path); 
    inter = internal; 
} 

@Override 
public Object handle(Request req, Response res) 
{ 
    try 
    { 
     return inter.handle(req, res); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
     return new ModelAndView(e, "errors"); 
    } 
} 
} 

ve

(statik ithalat kullanarak): Çok gibi istisnalar işleyebilir

get(wrap("/download", new DownloadHandler())); 
    post(wrap("/upload", new UploadHandler())); 
+0

Hi @Dan Aynı sorunla karşılaştığım için çalışabilmeniz için çevrenizde başka ne tür bir ayar yaptığınızı bilmek istiyorum. –