有人可以向我解释以下代码中的throws Exception
部分吗?
public static void main(String args[]) throws Exception {
//do something exciting...
}
提前谢谢。
答案 0 :(得分:3)
这意味着函数main(String[])
可以抛出Exception
的任何子类型。在Java中,方法抛出的所有异常(RunTimeException
除外)必须显式声明。
这意味着每个使用 main(String[])
的方法都必须小心(try
,catch
)Exception
,或将自己声明为{ {1}}也是。
答案 1 :(得分:1)
异常是Java在意外发生时使用的一种方式。例如,如果要从文件读取/写入文件,则必须处理在文件出现问题时将引发的IOException
。
向您解释的一个小例子:
让我们采用一个名为method1()
的方法抛出异常:
public void method1() throws MyException {
if (/* whatever you want */)
throw new MyException();
}
它可以以两种方式使用。 method2()
的第一种方式就是进一步抛出热土豆:
public void method2() throws MyException {
method1();
}
使用method3()
的第二种方式将处理该异常。
public void method3() {
try {
method1();
}
catch (MyException exception) {
{
/* Whatever you want. */
}
}
有关例外的更多信息,http://download.oracle.com/javase/tutorial/essential/exceptions/应该有所帮助。
修改强>
假设我们想要返回此数组中值的含义(这是输入数字的平方):int[] squares = {0, 1, 4, 9, 16, 25};
或0
如果数字(input
)是太大了。
行人编程:
if (input > squares.length)
return 0;
else
return squares[input];
异常大师编程:
try {
return squares[input];
}
catch (ArrayIndexOutOfBoundException e) {
return 0;
}
第二个例子更干净,因为你可以在那之后添加另一个块(以及另一个块),以便修复每个可能的问题。例如,您可以在最后添加:
catch (Exception e) { // Any other exception.
System.err.println("Unknown error");
}