当前位置: 技术问答>java相关
关于 throw exception
来源: 互联网 发布时间:2014-12-30
本文导语: 关于 throw exception public vodi MethodName() throws Exception1,Exception2 { ...... try {......} catch(Exception1 ){....} catch(Exception2 ){....} } 是否函数内可能产生的违例都得在第一行方法名后用throws 声明,我自己写了一段程序,...
关于 throw exception
public vodi MethodName() throws Exception1,Exception2 {
......
try {......}
catch(Exception1 ){....}
catch(Exception2 ){....}
}
是否函数内可能产生的违例都得在第一行方法名后用throws 声明,我自己写了一段程序,方法名称上没有声明可能产生的违例,方法在try 体内自己throw 一个违例也能正常被catch
为我解释一下好吗?
谢谢
public vodi MethodName() throws Exception1,Exception2 {
......
try {......}
catch(Exception1 ){....}
catch(Exception2 ){....}
}
是否函数内可能产生的违例都得在第一行方法名后用throws 声明,我自己写了一段程序,方法名称上没有声明可能产生的违例,方法在try 体内自己throw 一个违例也能正常被catch
为我解释一下好吗?
谢谢
|
你的程序是错的,除非你在catch(Exception1){...} catch(exception2) {...} 或其它的catch中又throw 出你声明throws出的那些个exception1, exception2,否则的话编译器会说你永远也不会抛出这些异常,会拒绝编译的。
异常声明原则是:
1、自已不想处理的异常才在方法声明里抛出(用throws说明),不过可以先捕获处理后再重新抛出也行。
2、自已已经捕获后不再重新抛出的异常不可以在方法中声明,也即不可以用throws说明。
3、RuntimeException及其各子类所声明的异常不用在throws里说明,可以捕获但不推荐。
你的那些代码可以这样改写:
public vodi MethodName() throws Exception1,Exception2 {
......
try {......}
catch(Exception1 e){
// 作一些处理后再度抛出
....;
throw e;
}
catch(Exception2 e){
// 作一些处理后再度抛出
....;
throw e;
}
catch(OtherException e) {
....;
// 可以将其它类型的异常转换成你声明的异常,只要将下列语句的注释去掉即可。
// throw new Exception1();
// throw new Exception2();
}
}
异常声明原则是:
1、自已不想处理的异常才在方法声明里抛出(用throws说明),不过可以先捕获处理后再重新抛出也行。
2、自已已经捕获后不再重新抛出的异常不可以在方法中声明,也即不可以用throws说明。
3、RuntimeException及其各子类所声明的异常不用在throws里说明,可以捕获但不推荐。
你的那些代码可以这样改写:
public vodi MethodName() throws Exception1,Exception2 {
......
try {......}
catch(Exception1 e){
// 作一些处理后再度抛出
....;
throw e;
}
catch(Exception2 e){
// 作一些处理后再度抛出
....;
throw e;
}
catch(OtherException e) {
....;
// 可以将其它类型的异常转换成你声明的异常,只要将下列语句的注释去掉即可。
// throw new Exception1();
// throw new Exception2();
}
}
|
捕捉违例有两种写法:
第一种是在方法后用throws抛出,然后在调用方法的地方try和catch
第二种是直接在方法体try和catch
第一种是在方法后用throws抛出,然后在调用方法的地方try和catch
第二种是直接在方法体try和catch
|
不用,写一个就行了。
你用try catck,就可以不用throw
反之也一样。
你用try catck,就可以不用throw
反之也一样。
|
yeah,既然在内部能够catch,就没有必要thorw到外面去了。