try .... catch 就是用catch 捕获 try 中的异常,并处理;
catch是捕获异常。也就是说某一个操作有可能会抛出什么异常。
throw 就是不处理异常,直接抛出异常
调用一个会throws exception的方法(在方法定义的时候可以用throws实现)时,
需要把这个方法放在try里,然后用catch破获这个exception,做相应的处理。
throw new exception()是抛出一个exception,由别的method来破获它。
也就是说try....catch是为破获别人的exception用的,而throw是自己抛出exception让别人去破获的。
public void input() throws Exception
{ }
public void outputException()
{
try {
input();
}
catch(Exception e)
{
System.out.println("Exception");
}
}
简单的说,如果一个方法中用了throw,那么这个方法会向上抛出一个异常,
那么在调用这个方法的时候必须把这个调用放在try...catch块里处理这个异常。
很简单的东西,你可以定义你自己的异常,然后用throws抛出多个异常,
当然也可以抛出系统定义的异常;而try-catch块则在调用一个抛出了异常 的方法是使用,
就是如果一个方法抛出了至少一个的异常,你在调用该方法时,就必须用try-catch块捕获所有抛出的异常;
而throw则是指定抛出一 个特定的异常。
对于异常有两种处理方法
1、要么声明异常,也就是在方法名后面加上throws exceptionname,...,
方法本身只是抛出异常,由函数调用者来捕获异常。
若产生异常,异常会沿着调用栈下移,一直找到与之匹配的处理方法,
若到达调用栈底仍未找到,程序终止。
2、要么捕获异常。通过try catch方法,catch子句中放置处理异常的语句。
你可以选择声明异常而不去捕获它,那样交给调用者来处理异常;
也可以选择捕获异常,捕获try块中可能产生的异常。
try...catch 是捕获异常的,而throws是抛出异常的
try,catch:
对于会觉得会有异常抛出的程序块,用try{}包住,
然后用catch来抓住这个异常,在catch中对异常做处理,
在try中如果有异常的话,程序会转到catch而不会中断,
通常这两个是配合使用的,如果你不想因为程序有错,
而抛出一大堆异常的话,你就把该程序try起来,
throw:
try和catch只能获取程序运行时引发的异常,
而throw语句可以引发明确的异常,程序到了throw语句这后就立即停止,
不会执行后面的程序,
使用方法:
try
{
throw exception-list;
....
}
catch()
{
}
不过这种用法比较少,至少是我比较少用:)
throws:
如果一个方法会有异常,但你并不想处理这个异常,
就在方法名后面用throws,这样这个异常就会抛出,
谁调用了这个方法谁就要处理这个异常,或者继续抛出,使用方法:
tyep method-name(parameter-list) throws exception-list
{
.......
} |