2016-10-18 97 views
0

我目前正試圖理解JHipster中的異常處理。服務中的Jhipster異常處理

我想在服務中拋出異常。異常消息應在UI中翻譯,並且應爲消息設置參數。 CustomParameterizedException完全適合。但從架構的角度來看,我認爲我不能在服務中使用它,因爲例外位於Web包中。它爲什麼位於網絡包中?我希望它是在自己的包exception或類似的,所以它可以從應用程序的每個層訪問。

我也看到在ExceptionTranslator.processRuntimeException方法,任何RuntimeException可以處理,如果ResponseStatus註釋上設置例外。據我所見,UI中的翻譯只能根據錯誤代碼完成。所以我不能用它來定製錯誤消息,我需要它。

如何在jHipster應用程序中的web層以外的其他層進行異常處理?

感謝您的幫助提前!

回答

0

CustomParameterizedException位於網絡包中,因爲它使用的是ParameterizedErrorVM,它是一種視圖模型,它在JSON中被序列化並被應用程序的Angular部分使用。這是生成的代碼,隨時可以將其更改爲適合您的需求。

Spring MVC提供了幾種處理異常的方法,如blog post所示。

您也可以使用AOP來實現默認處理,如日誌記錄或翻譯異常,請參閱JHipster應用程序中的LoggingAspect

+0

感謝您的回答!我想了解JHipster生成方式的意圖。從我的角度來看,'ParameterizedErrorVM'的使用是不夠的。難道它也不是一個DTO,因爲它是通過服務層上的UserDTO完成的?這樣,異常也可以在服務層中使用。我認爲更復雜的數據相關驗證應該在服務層完成。在我看來,它也適合在這裏也使用'CustomParameterizedException'。 –

+0

隨意在github項目上提出PR –

+0

好吧,我會盡快完成,只要我在應用程序中運行良好。 –