定义一个方法的时候,可以使用throws 声明抛出异常。看到一个帖子说throws抛出的异常一定是Checked异常。原因如下:
遇到RuntimeException,那么一定是程序存在逻辑错误,要对程序进行修改;只有已检查异常才是程序员所关心的,程序应该且仅应该抛出或处理已检查异常。
虽然我试过一个方法声明抛出RuntimeException也是可以的,但是好像一般的方法确实不这么做。一般Checked异常要用try-catch语句捕获处理或者用throws语句抛出;运行时异常可以用ry-catch语句捕获处理也可以不处理。
我想问的是,虽然在语法上可以,但是运行时异常为什么不用throws语句抛出?
------解决思路----------------------
因为它默认不需要被捕捉(理由我想是捕捉了也没用,比较底层的异常,比如空指针,缓存溢出之类)
------解决思路----------------------
你知道的运行时异常有多少种?你是否经常遇到这些异常?如果都用try catch去捕获你的代码会是什么 样子?
------解决思路----------------------
已检查异常可以理解为编译时异常,是执行javac.exe就是编译器时产生的异常,如果不处理编译就通不过,运行时异常就是在执行java.exe产生异常,比如数组下标越界,这样的异常编译器是无法处理的,只有程序运行了,才会出现,对于这样的异常在编程的时候当然也能抛出或者catch,如果不处理,执行器会处理报错,程序也就中断了。所以说,已检查异常应当和你的业务逻辑相关,你要在编程的时候就要考虑到,必须要显示处理,运行时异常在编程的时候也要考虑,应当避免出现,比如数组下标越界,可以不显示处理。
------解决思路----------------------
运行时有异常了,这时候你的任务就是排错,把错的改过来,而不是把去抛异常。编译时异常如果你不处理连编译都过不去,更不要说运行了。异常可以让我们知道我们错在那里,进而把错误改正。
------解决思路----------------------
运行时异常要等到运行才知道。典型的例如空指针调用,会抛出nullpointException!
一般不通过抛RuntimeException,因为我们不知道何时出错啊!典型的处理方式就是用if来判断是否为空,在做特殊处理~