try .... catch 就是用catch 捕获 try 中的异常,并处理;
throw 就是不处理异常,直接抛出异常,由调用此方法的地方处理抛出的异常。
throw 就是不处理异常,直接抛出异常,由调用此方法的地方处理抛出的异常。
解决方案 »
- grayButton.setMargin(new Insets(0,0,0,0)); 没见得这句代码对按钮外观有什么变化?
- JS有没有自动选择下拉框里的东西的?
- 非常简单的java题目 !!帮帮忙~~!!
- 请教论坛各位大虾,如何将一个字符串加密成Long类型的数据?最好是用DES加密~~谢了
- 新手提问:看看这个数据库联接bean,有什么问题吗?
- 请教java字符串取子串问题
- 连接Oracle的代码怎么写?
- 本人想在网页中加入控件,不知是用applet好还是activex控件好,还有现在IE对applet的支持怎么样?
- 行为和状态的区别
- 一个小问题:取文件名称?
- java初学者,来者有分,今天结贴
- 在JB中怎么调用sql语句?
throw
和 try{ }
catch
不是一回事吗?
而throw 就是抛出一个异常。
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"); }
}
如果input()出现异常,在input()中不处理,在outputException()中处理
可还是不太明白,
到底写在方法名后面的 throws和写在方法里面的try{} catch{}有什么区别啊
我也不知道什么时候要在方法名后写上throws
1.
public void getconnect() throws Exception //抛出的异常
{
throws new exception();
}
2.
如果在调用这个方法的时候就必须用
try{
getconnect()
}catch(Exception e)
{
//出现异常DO ANYTHING
}
在第一中情况中的throws new exception可以跟任何的信息,这样就可以把在CATCH是获得的信息转化为自己定义的信息,但是缺点就是在你捕获的时候可
能会落掉一些更详细的错误、异常的信息
但还是不行,编译出错,必须在方法名后面加入 throws SQLException才行
public void executeInsert(String sql)
// throws SQLException
{
try
{
//conn = DriverManager.getConnection("jdbc:mysql://192.168.100.1:3306/test?, "test", "test");
conn.setAutoCommit(false);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
stmt.executeUpdate(sql);
conn.commit();
}
catch(SQLException ex)
{ex.printStackTrace(System.err);
conn.rollback();}
finally
{
stmt.close();
conn.close();
}
}
如果我不写throws,
try...catch到哪里去捕获异常呢?异常如何被抛出呢?
throws就是抛出异常给别人处理。
小兄弟,请把它放在
stmt.close();
conn.close();
catch(SQLException ex){}中试试
对于异常有两种处理方法
1、要么声明异常,也就是在方法名后面加上throws exceptionname,...,
方法本身只是抛出异常,由函数调用者来捕获异常。
若产生异常,异常会沿着调用栈下移,一直找到与之匹配的处理方法,若到达调用栈底仍未找到,程序终止。
2、要么捕获异常。通过try catch方法,catch子句中放置处理异常的语句。
你可以选择声明异常而不去捕获它,那样交给调用者来处理异常;
也可以选择捕获异常,捕获try块中可能产生的异常。那位小兄弟,在方法后加了throws就可以了。
实际上你是声明异常,当其他方法调用你所定义的executeInsert()方法时,必须有其中一个方法(调用栈中)来捕获它。你的代码中肯定还有可能产生异常的语句没有全部放到try{}块中,既然你打算在executeInsert()方法中处理异常,那么就不要再往更大的context传递了。
请问什么是:“再往更大的context传递了。”