第一个问题
throws 将捕获到的异常扔给上级
但是不用thorws 也会自动往上抛吧
throws 是给我们看的 而不是给编译器看的吗 提醒我们这个方法可能会抛出 这些异常吗
(如果有throws 之外的异常呢 ,就是 如果出现了 没有写在throws 后面的异常)
第二个问题
向上抛异常 为什么有的可能会引发异常有的不会
throw 是用逻辑判断 抛出异常
然后往里面写入一些信息 到上级方法就可以清楚的了解出了什么问题 ,不知道这样理解对不对
运行时异常不需要我们处理,受查异常需要做处理,要么try catch,要么抛给调用者,让调用者处理
throws不会捕捉异常,只会往上抛,只要是受查异常,不做任何处理,编译是会报错的,所以不存在有throws以外没有写的异常,不写就会报错。
throw抛异常那个是自定义的异常,用来报自己定义的一些错误信息
运行时异常会允许你不处理(比如算数异常 int i = 2 / 0,这种是你程序内部能任务捕获处理的),但是非运行异常在编译的时候就不会通过(比如IO异常),还有的就是其它错误了(Error类,类似内存溢出、栈溢出,需要通过修改内存大小和线程栈大小解决的),一般程序捕获异常是要做的,不能直接把错误抛给外部(比如接口直接返回一个空指针异常什么的),一般会自己封装一个自己看得懂的自定义异常类
可以看下这个https://blog.csdn.net/iblade/article/details/78196016