2011-07-17 79 views
20

我有一個自定義異常類類似如下:調用超構造

case class CustomException(errorMsg:String) extends Exception(error:String) 

所有我需要什麼,當我趕上例外的是把我的自定義異常,並通過我的錯誤消息的自定義異常。 我期望從CustomException構造函數調用super(errMsg) 但是,這不是現在發生的事情,並且我收到了一個編譯錯誤。

catch { 
     case s: Exception => throw CustomException("This is a custom message") 
    } 

我怎麼能調用超構造函數:

super(errorMessage) 

回答

34
case class CustomException(errorMsg:String) extends Exception(errorMsg) 
+0

Thx。不過,我很好奇爲什麼Scala沒有Java那樣超級(errorMsg)! – Echo

+16

@Echo:因爲它不是Java,而且超級構造函數只能從類的主構造函數中調用,即使如此,它也只能被稱爲構造函數中的第一個操作。 Scala的語法更好地代表了這個潛在的限制(如JVM強加的) –

+0

如果你想在你的自定義異常中實現異常構造函數(字符串,可拋出)和(字符串),該怎麼辦? – monzonj

7
case class CustomException(errorMsg:String) extends Exception(errorMsg) 

你調用父類的構造函數,但你傳遞的參數(error)未綁定到任何東西。

相關問題