2017-06-23 8 views

答えて

0

他の時間に例外をスローするのと同じ方法です。

switch (condition){ 
    case "A": 
     //do something 
     break; 
    case "B": 
     //do something 
     break; 
    default: 
     throw new Exception("oh no"); // or IllegalStateException or something 
} 

私は推測しているが、あなたはおそらくチェーンまで、この更なるキャッチし、その例外を伝播するためにあなたのメソッドのシグネチャを変更したい:

private static int ClimateCal() throws Exception 

がある場合気候は有限の値セットの1つに過ぎないという制約があると、実際には実行時ではなくコンパイル時にこの制約を強制しようとするべきです。可能な値を表す列挙型を宣言します。

enum Temperature 
{ 
    HOT  (0), 
    COLD  (250), 
    MODERATE (500); 

    private final int cal; 

    Temperature(final int cal) 
    { 
     this.cal = cal; 
    } 

    public int getCal() 
    { 
     return cal; 
    } 
} 

これをさらに明らかにすることができます。

4

を試してみてくださいを書いたことをどのように行うことができます何も一致したときに、私は例外をスローするスイッチブロックを持っている機能を持っています
private static int ClimateCal() throws Exception {   // Add throws keyword here If you want to catch the exception by the calling method. 
    int climateCal = 0; 
    switch (climate.toLowerCase()){ 
     case "Hot": 
      climateCal = 0; 
      break; 
     case "Cold": 
      climateCal = 250; 
      break; 
     case "Moderate": 
      climateCal = 500; 
      break; 
     default: 
      throw new Exception(); 
    } 
    return climateCal; 
} 
+0

とメソッドシグネチャはスローですか? – blackHawk

+0

はい、他の場所で例外をキャッチしたい場合。 – Abbas

+0

@blackHawk私は自分の答えを更新しました。 – Abbas

関連する問題