在方法的声明中,在方法的名称和参数列表后的如果有throws xxxException语句。
是不是在该方法体内一定要有throw xxxException语句。
例如:DriverManager类的getConnection()方法。其声明为:
public static Connection getConnection(String url)throws SQLException
是不是在该方法体内一定有throw SQLException
这条语句。
是不是在该方法体内一定要有throw xxxException语句。
例如:DriverManager类的getConnection()方法。其声明为:
public static Connection getConnection(String url)throws SQLException
是不是在该方法体内一定有throw SQLException
这条语句。
解决方案 »
- JSP 如何实现消息 【即时提醒】
- grails导出Excel问题
- portlet是怎么访问数据库的
- 如何将String类型的数组传入另一个jsp页面中?
- ORACLE sql语句 把列转行,再把重复的去掉,之间用;连接!问题!
- java中使用sql2000连接2005的问题
- 数据库设计问题
- 为什么说戒烟是一次行为矫正?
- 请问!!!我想用distinct取出一个字段的值,我写了以下的代码,为什么取出的值不是唯一的啊???
- 新手请教struts关于在继承ActionForm类中的使用validate方法的问题
- 恳求各位大哥大姐帮帮忙吧。。。。谢谢
- 在jsp中如何输出oracle的long raw类型数据(是保存JPG图片)
那个代码得意思就是:我的方法内得代码可能在执行得时候抛出这个异常,这个异常我方法不处理.抛给上层处理.
如果你方法体后边有throws SQLException
说明你方法里边有要处理的异常!
下边2种情况如果有一个存在的话方法后边都可以写throws SQLException
1:比如你定义数据库连接呀,定义文件就会有异常抛出!
2:throw SQLException 这句是表示你手动抛出异常~!如果方法里边2种情况都没的话你写throws SQLException 编译器就会抱错
不需得.方法体内不需要有throw SQLException了,
那个代码得意思就是:我的方法内得代码可能在执行得时候抛出这个异常,这个异常我方法不处理.抛给上层处理.---------------你这算是间接需要。总之是需要。当然,如果你的内部什么异常都没有,就是想在方法上抛个异常玩,也可以。就如同我上面说的。
类MyException2
package three;public class MyException2 extends Exception{
private int x;
public MyException2(){}
public MyException2(String msg){super(msg);}
public MyException2(String msg,int x){
super(msg);
this.x=x;
}
public int val()
{
return x;
}
}类ExtraFeatures:
package three;public class ExtraFeatures {
public static void f() throws MyException2{
System.out.println("Throwing MyException2 from f()");
throw new MyException2();
}
public static void g() throws MyException2{
System.out.println("Throwing MyException2 from g()");
throw new MyException2("Originated in g()");
}
public static void h() throws MyException2{
System.out.println("Throwing MyException2 from h()");
throw new MyException2("Originated in h()",47);
}
public static void main(String[] args){
try{
f();
}catch(MyException2 e){
e.printStackTrace();
}
try{
g();
}catch(MyException2 e){
e.printStackTrace();
}
try{
h();
}catch(MyException2 e){
e.printStackTrace();
System.out.println("e.val()="+e.val());
}
}
}执行类ExtraFeatures的时候,结果为:
Throwing MyException2 from f()
Throwing MyException2 from g()
Throwing MyException2 from h()
e.val()=47
three.MyException2: Detail Message:0 null
at three.ExtraFeatures.f(ExtraFeatures.java:6)
at three.ExtraFeatures.main(ExtraFeatures.java:18)
three.MyException2: Detail Message:0 Originated in g()
at three.ExtraFeatures.g(ExtraFeatures.java:10)
at three.ExtraFeatures.main(ExtraFeatures.java:23)
three.MyException2: Detail Message:47 Originated in h()
at three.ExtraFeatures.h(ExtraFeatures.java:14)
at three.ExtraFeatures.main(ExtraFeatures.java:28)
为什么在ExtraFeatures中
throws MyException2和throw new MyException2两个缺少一个就错误。
是不是在该方法体内一定要有throw xxxException语句。
例如:java.sql.*包的DriverManager类有getConnection()方法。
也就是一定要这样写:
public static Connection getConnection(String url)throws SQLException
{
.
.
.
throw SQLException;
}