从void返回一个字符串

时间:2016-04-25 11:25:03

标签: java error-handling exception-handling

你好,我有这个编程任务,我必须使用他们给我们的功能,因为他们给我们使用,我遇到的问题是这个事实必须是无效的,我不允许使用系统.out.println();要么我的问题是如何在不更改方法标题的情况下返回异常或使用System.out.println();?

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!");
    }
}

5 个答案:

答案 0 :(得分:0)

您可以更改方法签名并抛出异常

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();
}

答案 1 :(得分: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);

   } 

你无法返回异常。从方法中抛出异常,您可以使用关键字throw为上面的方法从方法中抛出异常

答案 2 :(得分:0)

在你的catch块中执行以下操作:

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

您不需要向方法添加throw声明,因为IndexOutOfBoundsException是RuntimeException。

无论您何时调用该函数,都可以添加一个catch块来读取错误消息,如下所示:

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

答案 3 :(得分:0)

好吧,如果方法使用不正确(没有验证索引),可能应该抛出异常吗?

您可以完全删除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);
    }
}

答案 4 :(得分:-1)

删除try..catch块并将您的功能修改为

def curried(param1: Int)(param2: Int): Int = ...

在调用此方法的位置添加try catch,并在那里使用public void deleteItem(String itemID) throws IndexOutOfBoundsException{ index = Change.indexOf(itemID); StockItems.remove(index); Change.remove(index); }

Ya即使您没有向此方法添加throws,但在try catch块中调用deleteItem也可以。