关于抛出异常

时间:2021-03-11 06:03:26
在java的方法中throw定义了一个异常,是不是在该方法首部必须声明抛出异常啊?

19 个解决方案

#1


有点不解,等高手

#2


http://topic.csdn.net/u/20101230/10/cdecfd1f-1a04-4108-b110-d96ebcf550f9.html
高手顺便看看这个问题,我不信没人能解决。

#3


不需要的 只要在同一个方法中有catch对应的异常就行了……  

#4


如果方法中throw异常那么在方法上应该声明throws异常

#5


引用 4 楼 leguroky 的回复:
如果方法中throw异常那么在方法上应该声明throws异常


可以在throw包上try catch块 
也可以在方法上声明throws

#6


支持5楼。5楼是对的。

#7


5楼正解,如果你是打印或是输出到log里就不要声明

#8


不是的。throws用在方法声明的头部,意思是转移异常,让上层try-catch块来处理异常。
而throw用在方法体中,意思是显示地抛出异常,并在本层进行异常的处理。

#9


有两种方法处理这种情况,
  一种是在方法签名中声明抛出异常,让调用者去处理:throws 该异常类型;
  另一种是在throw语句的外面适当位置用try ... catch来处理该异常,在方法内部处理而非抛给调用者。

至于选择哪种方式,就很有讲究了。
一般来讲,你写的这个方法(暂称为m1)是被其他方法(暂称为m2)调用的,
  如果m1中发生异常后,需要让m2知道m1执行过程中发生了异常情况,那么应该在方法签名中声明抛出,并且不要再m1方法内部去处理这个异常(即使处理,之后也要再次抛出);
  如果发生该异常时,不需要m2知道,那么在m1中内部处理就是了。
  做这些考虑时,与是否写入日志是无关的,不论选用哪种方法处理,该写日志还写日志。

#10


不一定的。有的方法需要throws异常。可以用Try {}catch{}finally{}捕获

#11


异常的处理有两种方式:推卸(throws)、承担(catch)。

#12


如果抛出的是RuntimeException,就不需要在方法声明抛出异常。否则,就需要声明,或者catch掉

#13


不错  学习了  呵呵

#14


非常感谢大家的回复,但是我的方法里没有try catch也没有在方法声明时throws,我很是不明白为什么程序还能运行

#15


如果你这么做,那你在调用这个方法的时候要加上try

#16


如果有catch就不要再函数头抛出了吧!如果没有那就需要~~

throw只是告诉程序你要抛,具体抛不抛那是你的事了吧~~

才疏学浅,仅作参考!

#17


在方法后写throws Exception

#18


该回复于2011-01-05 08:47:57被版主删除

#19


该回复于2011-01-05 11:03:46被版主删除

#1


有点不解,等高手

#2


http://topic.csdn.net/u/20101230/10/cdecfd1f-1a04-4108-b110-d96ebcf550f9.html
高手顺便看看这个问题,我不信没人能解决。

#3


不需要的 只要在同一个方法中有catch对应的异常就行了……  

#4


如果方法中throw异常那么在方法上应该声明throws异常

#5


引用 4 楼 leguroky 的回复:
如果方法中throw异常那么在方法上应该声明throws异常


可以在throw包上try catch块 
也可以在方法上声明throws

#6


支持5楼。5楼是对的。

#7


5楼正解,如果你是打印或是输出到log里就不要声明

#8


不是的。throws用在方法声明的头部,意思是转移异常,让上层try-catch块来处理异常。
而throw用在方法体中,意思是显示地抛出异常,并在本层进行异常的处理。

#9


有两种方法处理这种情况,
  一种是在方法签名中声明抛出异常,让调用者去处理:throws 该异常类型;
  另一种是在throw语句的外面适当位置用try ... catch来处理该异常,在方法内部处理而非抛给调用者。

至于选择哪种方式,就很有讲究了。
一般来讲,你写的这个方法(暂称为m1)是被其他方法(暂称为m2)调用的,
  如果m1中发生异常后,需要让m2知道m1执行过程中发生了异常情况,那么应该在方法签名中声明抛出,并且不要再m1方法内部去处理这个异常(即使处理,之后也要再次抛出);
  如果发生该异常时,不需要m2知道,那么在m1中内部处理就是了。
  做这些考虑时,与是否写入日志是无关的,不论选用哪种方法处理,该写日志还写日志。

#10


不一定的。有的方法需要throws异常。可以用Try {}catch{}finally{}捕获

#11


异常的处理有两种方式:推卸(throws)、承担(catch)。

#12


如果抛出的是RuntimeException,就不需要在方法声明抛出异常。否则,就需要声明,或者catch掉

#13


不错  学习了  呵呵

#14


非常感谢大家的回复,但是我的方法里没有try catch也没有在方法声明时throws,我很是不明白为什么程序还能运行

#15


如果你这么做,那你在调用这个方法的时候要加上try

#16


如果有catch就不要再函数头抛出了吧!如果没有那就需要~~

throw只是告诉程序你要抛,具体抛不抛那是你的事了吧~~

才疏学浅,仅作参考!

#17


在方法后写throws Exception

#18


该回复于2011-01-05 08:47:57被版主删除

#19


该回复于2011-01-05 11:03:46被版主删除

#20