我需要顯示每個在適當的位置服務獲得了一些驗證消息,我解決它把消息中的異常:可以在異常中存儲其他對象嗎?
class InvalidInputException extends RuntimeException {
def errors
InvalidInputException(String s) {
super(s)
}
InvalidInputException(String s, errors) {
super(s)
this.errors = errors
}
}
這樣的話,我可能會拋出異常發送錯誤:
if (errors) {
throw new InvalidInputException("There were some errors", errors)
}
..然後我在控制器處理錯誤後,經過捕獲異常:
...
catch (InvalidInputException e) {
if (e.errors) {
// set them up to display appropriately
}
// render the view
}
現在,我讀過Groovy的例外可能花費太多,所以...這太糟糕了嗎? 在異常中可能會遇到什麼問題?
這比處理返回的錯誤消息要容易得多,而且代碼要短得多。
看起來對我來說......您在哪裏閱讀過_「Groovy的例外可能花費太多」_?另外,你對「太多」的定義是什麼? –
一個例外花費太多的想法對我來說似乎很奇怪。例外是例外。如果你處於拋出異常(它們是昂貴的,也是普通的java)對你的性能有影響的地步,要麼你真的做得非常糟糕(拋出太多例外),要麼你做得很好,你可能負擔得起重新設計以解決問題。 – loteq
@tim_yates我認爲OP想要說出loteq對昂貴的說法。例如,這裏討論[這裏](http://stackoverflow.com/questions/299068/how-slow-are-java-exceptions)。 –