当前位置: 技术问答>java相关
请问try ... catch 和 throw有什么区别,谢谢
来源: 互联网 发布时间:2017-03-11
本文导语: 请问try ... catch 和 throw有什么区别,谢谢 | 可能是那位小兄弟的finally块中的两条语句会抛出异常 小兄弟,请把它放在 stmt.close(); conn.close(); catch(SQLException ex){}...
请问try ... catch 和 throw有什么区别,谢谢
|
可能是那位小兄弟的finally块中的两条语句会抛出异常
小兄弟,请把它放在
stmt.close();
conn.close();
catch(SQLException ex){}中试试
对于异常有两种处理方法
1、要么声明异常,也就是在方法名后面加上throws exceptionname,...,
方法本身只是抛出异常,由函数调用者来捕获异常。
若产生异常,异常会沿着调用栈下移,一直找到与之匹配的处理方法,若到达调用栈底仍未找到,程序终止。
2、要么捕获异常。通过try catch方法,catch子句中放置处理异常的语句。
你可以选择声明异常而不去捕获它,那样交给调用者来处理异常;
也可以选择捕获异常,捕获try块中可能产生的异常。
那位小兄弟,在方法后加了throws。。。就可以了。
实际上你是声明异常,当其他方法调用你所定义的executeInsert()方法时,必须有其中一个方法(调用栈中)来捕获它。
你的代码中肯定还有可能产生异常的语句没有全部放到try{}块中,既然你打算在executeInsert()方法中处理异常,那么就不要再往更大的context传递了。
小兄弟,请把它放在
stmt.close();
conn.close();
catch(SQLException ex){}中试试
对于异常有两种处理方法
1、要么声明异常,也就是在方法名后面加上throws exceptionname,...,
方法本身只是抛出异常,由函数调用者来捕获异常。
若产生异常,异常会沿着调用栈下移,一直找到与之匹配的处理方法,若到达调用栈底仍未找到,程序终止。
2、要么捕获异常。通过try catch方法,catch子句中放置处理异常的语句。
你可以选择声明异常而不去捕获它,那样交给调用者来处理异常;
也可以选择捕获异常,捕获try块中可能产生的异常。
那位小兄弟,在方法后加了throws。。。就可以了。
实际上你是声明异常,当其他方法调用你所定义的executeInsert()方法时,必须有其中一个方法(调用栈中)来捕获它。
你的代码中肯定还有可能产生异常的语句没有全部放到try{}块中,既然你打算在executeInsert()方法中处理异常,那么就不要再往更大的context传递了。
|
try .... catch 就是用catch 捕获 try 中的异常,并处理;
throw 就是不处理异常,直接抛出异常,由调用此方法的地方处理抛出的异常。
throw 就是不处理异常,直接抛出异常,由调用此方法的地方处理抛出的异常。
|
catch是捕获异常。也就是说某一个操作有可能会抛出什么异常。
而throw 就是抛出一个异常。
而throw 就是抛出一个异常。
|
调用一个会throws exception的方法(在方法定义的时候可以用throws实现)时,需要把这个方法放在try里,然后用catch破获这个exception,做相应的处理。
throw new exception()是抛出一个exception,由别的method来破获它。
也就是说try....catch是为破获别人的exception用的,而throw是自己抛出exception让别人去破获的。
throw new exception()是抛出一个exception,由别的method来破获它。
也就是说try....catch是为破获别人的exception用的,而throw是自己抛出exception让别人去破获的。
|
up!!!
public void input() throws Exception
{ }
public void outputException()
{
try { input();}
catch(Exception e)
{ System.out.println("Exception"); }
}
如果input()出现异常,在input()中不处理,在outputException()中处理
public void input() throws Exception
{ }
public void outputException()
{
try { input();}
catch(Exception e)
{ System.out.println("Exception"); }
}
如果input()出现异常,在input()中不处理,在outputException()中处理
|
如果你在方法名后面throws了异常,那么你在方法体中可以不用try,catch语句把可能抛出异常的语句{}起来,
try,catch可以让你进行异常处理,比如你在抛出异常之后由自己去打印自己的信息,并可以进行其他的出来,但是如果你不用try,catch语句的话,则由系统来处理啦。
try,catch可以让你进行异常处理,比如你在抛出异常之后由自己去打印自己的信息,并可以进行其他的出来,但是如果你不用try,catch语句的话,则由系统来处理啦。
|
先看如下的代码:
1.
public void getconnect() throws Exception //抛出的异常
{
throws new exception();
}
2.
如果在调用这个方法的时候就必须用
try{
getconnect()
}catch(Exception e)
{
//出现异常DO ANYTHING
}
在第一中情况中的throws new exception可以跟任何的信息,这样就可以把在CATCH是获得的信息转化为自己定义的信息,但是缺点就是在你捕获的时候可
能会落掉一些更详细的错误、异常的信息
1.
public void getconnect() throws Exception //抛出的异常
{
throws new exception();
}
2.
如果在调用这个方法的时候就必须用
try{
getconnect()
}catch(Exception e)
{
//出现异常DO ANYTHING
}
在第一中情况中的throws new exception可以跟任何的信息,这样就可以把在CATCH是获得的信息转化为自己定义的信息,但是缺点就是在你捕获的时候可
能会落掉一些更详细的错误、异常的信息
|
简单的说,如果一个方法中用了throw,那么这个方法会向上抛出一个异常,那么在调用这个方法的时候必须把这个调用放在try...catch块里处理这个异常。
|
很简单的东西,你可以定义你自己的异常,然后用throws抛出多个异常,当然也可以抛出系统定义的异常;而try-catch块则在调用一个抛出了异常的方法是使用,就是如果一个方法抛出了至少一个的异常,你在调用该方法时,就必须用try-catch块捕获所有抛出的异常;而throw则是指定抛出一个特定的异常。