当前位置: 技术问答>java相关
请教关于 throws,throw,catch...
来源: 互联网 发布时间:2015-03-24
本文导语: 是不是在一个方法中throw一个异常的时候,在方法的声明是必须有throws子句来声明相应的异常?我刚才编译了一个程序好像必须这样。这是为什么呢?既使有catch语句也不行。 我在方法里throw了异常然后又被自已catch了...
是不是在一个方法中throw一个异常的时候,在方法的声明是必须有throws子句来声明相应的异常?我刚才编译了一个程序好像必须这样。这是为什么呢?既使有catch语句也不行。
我在方法里throw了异常然后又被自已catch了,为什么还要throws呢?书上说throws是再抛出的意思,既然没有必要再抛出为什么还要throws???
我在方法里throw了异常然后又被自已catch了,为什么还要throws呢?书上说throws是再抛出的意思,既然没有必要再抛出为什么还要throws???
|
在方法的声明是必须有throws,再次抛出的目的是因为有些方法里面不想处理本方法里面出现的异常,所以抛出去让调用这个方法的代码处理,所以调用有throws的方法必须使用try catch
|
方法里 catch 了异常,不用再 throws !
import java.io.*;
public class Test {
public static void main(String args[]) {
new Test().print();
}
public void print() {
try {
System.out.println("hello");
throw new IOException("IOException");
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
public class Test {
public static void main(String args[]) {
new Test().print();
}
public void print() {
try {
System.out.println("hello");
throw new IOException("IOException");
} catch (IOException e) {
e.printStackTrace();
}
}
}
|
public void test() throws Exception
{
try
{
throw new Exception("Throw from try block!");
}catch(Exception e)
{
System.out.println("catch exception!"+e.toString());
throw e;
}
finally
{
System.out.println("Finally !");
}
}
{
try
{
throw new Exception("Throw from try block!");
}catch(Exception e)
{
System.out.println("catch exception!"+e.toString());
throw e;
}
finally
{
System.out.println("Finally !");
}
}
|
你是否确定你抛出的异常全部已经被自己捕捉,如果还有未被处理的异常,则必须再用throws抛出。
|
内部CATCH的EXCEPTION不需要THROWS,除非你在CATCH中显式THROW。
所以,显式THROW必须THROWS,且THROWS的是THROW的父类EXCEPTION。
所以,显式THROW必须THROWS,且THROWS的是THROW的父类EXCEPTION。