2016-04-25 1 views
0

こんにちは私は彼らが私たちに与えた機能を使用しなければならないこのプログラミング割り当てを持っています、私が遭遇している問題は無効ですSystem.out.println()を使用することはできません。どちらか私の質問は、私はどのように私はSystem.out.println();を使用してメソッドのヘッダーまたはそれを変更せずに例外を返すか?voidから文字列を返します

public void deleteItem(String itemID){ 
    try { 
     index = Change.indexOf(itemID); 
     StockItems.remove(index); 
     Change.remove(index); 
    } 
    catch (IndexOutOfBoundsException e) { 
     System.out.println("ITEM " + itemID + " DOES NOT EXIST!"); 
    } 
} 
+0

何を意味するかを「例外を返す」ん? – Andrew

+0

例外を「返す」ことはありません。 –

+0

独自の例外を作成してスローする必要があります。 – Maroun

答えて

0

あなたはのtry..catchブロックを削除し、修正し、あなたのメソッドのシグネチャを変更し、

public void deleteItem(String itemID) throws Exception{ 
    try { 
     index = Change.indexOf(itemID); 
     StockItems.remove(index); 
     Change.remove(index); 
    }catch (IndexOutOfBoundsException e) { 
     Exception ex = new Exception("ITEM " + itemID + " DOES NOT EXIST!"); 
     throw ex; 
    } 
} 

一度あなたがこの

try{ 
    xxx.deleteItem("your itemID"); 
}catch(Exception e){ 
    // You will read your "ITEM " + itemID + " DOES NOT EXIST!" here 
    String yourErrorMessage = e.getMessage(); 
} 
+4

'IndexOutOfBoundsException'は実行時例外であるため、そのままでスローすることができます。 – JustACluelessNewbie

+0

私はまだ "item" + itemID + "存在しない"を得る必要があります。何とか –

+0

メソッドを呼び出すキャッチブロックに 'e.getMessage()'という文字列を読み込みます。 – Nirekin

-1

のようなエラー・メッセージを取得することができます行って例外をスローすることができます機能としては、

public void deleteItem(String itemID) throws IndexOutOfBoundsException{ 
     index = Change.indexOf(itemID); 
     StockItems.remove(index); 
     Change.remove(index); 
} 

このメソッドを呼び出す場所にtry catchを追加し、そこにSystem.out.println("ITEM " + itemID + " DOES NOT EXIST!");を使用します。

あなたがこのメソッドにスローを追加しなくても、tryキャッチブロックにdeleteItemの呼び出しを入れても機能します。

+0

y負の投票ですか? –

+0

彼は "メソッドヘッダーを変更せずに"と言っています –

+0

メソッドヘッダーを変更していません...戻り値の型を追加するか、パラメーターを変更するとcatchメソッドが追加されました。とにかくあなた次第です...他の人も同じようにしています。 –

0
public void deleteItem(String itemID){ 
    try { 
     index = Change.indexOf(itemID); 
     StockItems.remove(index); 
     Change.remove(index); 
    } 
    catch (IndexOutOfBoundsException e) { 
     throw new IndexOutOfBoundsException("ITEM " + itemID + " DOES NOT EXIST!"); 
    } 
} 


    public void deleteItem(String itemID)throws IndexOutOfBoundsException{ 

     index = Change.indexOf(itemID); 
     StockItems.remove(index); 
     Change.remove(index); 

    } 

返品の例外はありません。例外は、あなたがこれを行うあなたのcatchブロックでは、方法

0

からの例外をスローするthat.try、上記の方法のためのキーワードthrowを使用することができ、メソッドからスローされます。

catch (IndexOutOfBoundsException e) { 
     throw new IndexOutOfBoundsException("ITEM " + itemID + " DOES NOT EXIST!"); 
} 

あなたはスローを追加する必要はありませんIndexOutOfBoundsExceptionはRuntimeExceptionであるため、あなたのメソッドに宣言してください。

catch (IndexOutOfBoundsException ex) { 
     System.out.println(ex.getMessage()); 
} 
0

まあ、方法は多分、(インデックスの検証なし)が誤って使用されている場合、それ:あなたが関数を呼び出し、これまで

次のようなエラーメッセージを読むためにcatchブロックを追加することができます例外をスローする必要がありますか?

try-catchブロックを完全に取り外すことができます。 IndexOutOfBoundsExceptionは実行時の例外なので、throws IndexOutOfBoundsExceptionの構文は必要ありません。

あなたは例外があまり不可解になりたい場合は、あなたがあなた自身のRuntimeExceptionでそれをラップすることができます:

public void deleteItem(String itemID){ 
    try { 
     index = Change.indexOf(itemID); 
     StockItems.remove(index); 
     Change.remove(index); 
    } 
    catch (IndexOutOfBoundsException e) { 
     throw new RuntimeException("Invalid item ID: " + itemID, e); 
    } 
} 
関連する問題