你好,我有这个编程任务,我必须使用他们给我们的功能,因为他们给我们使用,我遇到的问题是这个事实必须是无效的,我不允许使用系统.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!");
}
}
答案 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也可以。