2015-10-07 70 views
-1

我是新來的異常,並在getMessage()和超級(customMessage)有點困惑。請原諒我,如果這聽起來相當可笑...如何在自定義異常中打印消息?

我嘗試捕捉的代碼部分是在這裏:

try{ 
     sc.buyASong(); 
    } catch (CardEmptyException e){ 
     System.out.println("Caught error: " +e.getMessage()); 
    } catch (CardNotActivatedException e){ 
     System.out.println("Caught error: " +e.getMessage()); 
    } 

我想打印「陷入錯誤:卡未激活」 或「陷入錯誤:卡上沒有更多歌曲「。我的自定義異常是這樣

class CardNotActivatedException extends Exception{ 
public CardNotActivatedException(){ 
    super("Card not activated"); 
    } 
} 
class CardEmptyException extends Exception{ 
    public CardEmptyException(){ 
     super("No more songs on the card"); 
    } 
} 

但是當我運行它,它打印

com.example.CardNotActivatedException: Card not activated 

和「夾縫錯誤:----」不打印出來爲好。有什麼我錯誤理解的嗎?因爲它看起來像我根本錯誤,我不太確定我的誤解是...?

+1

您確定您正在運行您認爲自己的代碼嗎? –

回答

1

你確定你在捕捉CardEmptyException嗎? 你忘了保存你的代碼嗎?

無論如何,我建議你改變你的方法,並使用一個構造函數方法接收一個String對象。你可以保持一個默認的消息的默認costructor,而且使用的財產以後像這樣的:

public MyCustomException(String arg0) { 
    super(arg0); 
} 

然後,當你調用這個例外,你可以調用帕薩特要的信息。