创建类TestBook,并创建测试用例来测试类Book
在此阶段不处理任何异常,只需将它们传递给调用方法即可。
上面的指令是否意味着我的测试者类,TestBook应该有它的主要方法“抛出ParseException”,当我用“错误”运行我的程序时,这不应该崩溃,而应该将异常传递给...?< / p>
public class TestBook{
public static Book directory=new Book(); //Book contains an arraylist of dates
public static void main(String[] args) throws ParseException {
directory.addApt("01-04-1996","testdate");
//this will create an instance of a Apt and is in the INCORRECT format.
}
Book类中的addApt方法如下所示:
String[] dates=date.split("-");
if(dates[0]!=2)
throw new ParseException("incorrect format day should be in numbers,2);
if(dates[0]!=3)
throw new ParseException("incorrect format month should be in letters,2);
if(dates[0]!=4)
throw new ParseException("incorrect format year should be in numbers,2);
Apt newAppt=new Apt=(date,type);
当我运行它时,我收到一条错误消息:线程“main”中的异常java.text.ParseException:格式不正确,月份应该是字母。
但我的问题是为什么会出现这种情况,因为我正在抛出它,为什么要像这样处理呢?我想我对throw(s)与try / catch ...感到困惑。
答案 0 :(得分:0)
似乎分配是创建一个没有TestBook
方法的类main
,而是使用其他static
方法来测试Book
类。例如,您可能有一种测试以正确格式创建书籍的方法,一种测试以错误格式创建书籍的方法,等等。
答案 1 :(得分:0)
没有人抓住/处理你扔的异常,所以它一直冒泡到顶部并最终被打印出来。你期待发生什么?
throw
触发异常。如果你想自己处理它,你需要catch
它在某个地方......
答案 2 :(得分:0)
throw
会抛出exception
。该关键字允许您抛出自己的自定义例外。
所有未处理的异常(自定义或标准异常)都会导致运行时异常。
将调用addApt
方法的代码放在try/catch
块中,将catch
exceptions
置于throwing
。
抛出异常是一种很好的方法,可以从具有非void返回类型的方法中返回一个值。举一个非常简单的例子,假设我们有一个名为public int getDaysInMonth(int month)
的方法。现在,我们期望month
为1-12。我们的方法必须返回一个int。那么当使用无效月调用方法时我们该怎么办?
int getDaysInMonth(int month) {
switch(month) {
//case 1-12
default:
break;
}
}
所以...我们可以为所有有效月份提供案例,这不是问题。一种解决方案可能是返回0
或-1
或某些明显的返回值。但实际上我们根本不需要返回任何东西。我们可以抛出异常。
default:
throw new IllegalArgumentException("Month must be between 1 and 12");
现在,我们将getDaysInMonth(int)
的调用放在try/catch
块中,或者如果我们不调用,我们的程序可能会因非法的参数异常而停止。但是我们可以将逻辑放在catch
块中来处理如何处理这个异常等等。
我知道我的例子不是根据你的情况建模的,但它是如何充分利用throw
的一个很好的例子。