1
public void init(Config config)throws IOException{
XXXXXX
}2
public void init(Config config){
try{
XXXXXX
}catch(IOException){
}
}原理上有什么不同?
public void init(Config config)throws IOException{
XXXXXX
}2
public void init(Config config){
try{
XXXXXX
}catch(IOException){
}
}原理上有什么不同?
public void init(Config config)throws IOException{
XXXXXX
}
该方法声明一个异常,表该方法有可能出现的异常
如果要使用该方法,必须放到try块内,或继续声明一个异常来传递该异常例:
public void init1()throws IOException{
xxx.init(config);
}
或
public void init1(){
try{
xxx.init(config);
}catch(IOException e){
}
}
---------------------------------------------------------
2
public void init(Config config){
try{
XXXXXX
}catch(IOException){
}
}
try块内出现异常,则执行catch块内语句
其他方法调用该方法不用声明异常
1、写try\catch捕捉它,处理
2、暂时不理它,把其throw掉,如果将来有方法调用这个方法的话你可以在那个方法里再捕捉,或者选择继续扔掉,就这样一直扔下去最终会扔到main()函数里,或者系统的某个地方(比如上文初始化函数在对象创建的时候被调用),对象创建可能是由虚拟机或者中间件运行时完成的,那么如果一直不catch的话最终由虚拟机或者中间件完成,反正一个有可能出现异常的方法,早晚要被catch的。
public void test1(){
try{
XXX
}catch(IOException){ }
}public void test2(){
test1();
try{
YYY
}catch(IOException){ }
}在上面情况下两个相互调用的方法都用了IOException,那么完全可以把第一个方法的IOException throw到第二个方法里一起catch。public void test1()Throw IOException{
try{
XXX
}catch(IOException){ }
}public void test2(){
try{
test1();
YYY
}catch(IOException){ }
}
每次异常只在终端方法里catch一次,而如果还有一个方法test3()调用了test2而里面没有其他需要捕获的异常,那么完全没有必要把异常throw到test3()里
catch(IOException i)抛出异常,捕获异常对象的信息
推荐楼主去看看 CORE JAVA 里的异常处理那一章
action调用的方法就可以用第一种方式。
是方法抛出 是第三人称 所以用单数
声明块内(方法域内)可能会抛出的异常,抛给调用此方法的主体2.try catch
确定对象后尝试捕捉,捕捉到后进行处理还有个题外话:throw
是程序操作者主动抛出 第一人称 所以不加s
throw new Exception();
XXXXXX
} 就必须在调用时用try{}catch捕捉,否则就会抛给java虚拟机,程序不能运行。如果用:public void init(Config config){
try{
XXXXXX
}catch(IOException){
}
}就不会出现上面的情况了。
我也不知道对不对,着是我自己对它的理解。
public void init(Config config)throws IOException{
XXXXXX
}
这样写的话,必然在某个调用该方法的地方有catch处理, init方法不做catch处理。