可捕获异常与不可捕获异常的区别?

1、先明确概念:抛出指的是不处理,捕获则处理
捕获异常是指发生异常时,最相应处理,避免程序崩溃
抛出异常大概就是让程序知道哪里可能会存在异常,发生异常后,回滚处理
2、执行顺序
抛出异常异常后— 意味着catch代码块后面就不再执行了;
不抛出直接捕捉— 意味着catch代码块后面还会继续执行;
因为捕捉(即catch代码块)是在try代码块的后面执行的,然后你再throw一个Exception又是在catch代码块捕捉到异常后执行的,也是说顺序是先try–>catch->throw;
3、两者区别
异常分为运行时异常(RuntimeException)、受检异常(Exception)、系统错误error。
RuntimeException,也就是运行时异常,表示代码本身存在BUG,比如ArrayIndexOutOfBoundsException,数组下标越界,数组定义的长度不够实际使用,代码若不调BUG进行处理肯定还会报错,控制台一旦报RuntimeException,就必须在代码中找BUG,因为代码BUG是人为粗心制造的,不是try-catch一下就能解决的。try-catch用在代码BUG上是毫无意义的,只需要写代码时谨慎点就能减少BUG,而不是try-catch。
非RuntimeException,就是受检异常。比如处理文件流时的I/O问题,就属于编译时异常,相当于假设有IO异常就利用try-catch对其进行处理,或者 throws即可。
error,通常是系统出现了不可控制的错误,这个通常与程序无关,所以是不需要处理的。
下面给出运行时异常与受检异常的清晰定义:
①受检查异常表示程序可以处理的异常,如果抛出异常的方法本身不能处理它,那么方法调用者应该去处理它,从而使程序恢复运行,不至于终止程序。例如,喷墨打印机在打印文件时,如果纸用完或者墨水用完,就会暂停打印,等待用户添加打印纸或更换墨盒,如果用户添加了打印纸或更换了墨盒,就能继续打印。
②运行时异常表示无法让程序恢复运行的异常,导致这种异常的原因通常是由于执行了错误操作。一旦出现了错误操作,建议终止程序并仔细的debug,因此Java编译器不检查这种异常。

4、各种情况

解决方案1:
捕获异常,可以由程序员自行对出现的异常进行处理
抛出异常,程序运行过程中产生的异常递交给虚拟机,由虚拟机进行处理,异常的处理程序员无法干预
解决方案2:
抛出异常是方法本身不进行处理这个异常需要调用方法的时候进行处理,捕获异常是在方法本身自己将异常进行处理。
解决方案3:
捕获就是catch
抛出就是上抛
Java中的异常的捕获和抛出是什么意思,有什么区别
答:捕获异常是指发生异常时,最相应处理,避免程序崩溃 抛出异常大概就是让程序知道哪里可能会存在异常,发生异常后,回滚处理
java捕获异常和抛出异常有什么区别?
答:捕获异常,可以由程序员自行对出现的异常进行处理 抛出异常,程序运行过程中产生的异常递交给虚拟机,由虚拟机进行处理,异常的处理程序员无法干预
java异常抛出异常后捕捉和不抛出直接捕捉有什么区别
答:1. 其实抛出异常后应该就不能叫捕捉了 — 因为捕捉(即catch代码块)是在try代码块的后面执行的,然后你再throw一个Exception又是在catch代码块捕捉到异常后执行的,也是说顺序是先try–>catch->throw; 2. 抛出异常异常后— 意味着catch代码块后面就…
java自定义异常处理和系统异常处理在抛出异常时有…
答:public class TestException { public static void main(String[] args) { try { Student s = new Student(-20, “张三”); } catch (ShuziException e) { System.out.println(e.getMessage()); } } } class Student { private int age; private S…
JAVA 关于抛出和捕获异常的问题
答:首先,你先无视掉那个机器人的回答吧…… 因为第3个catch捕获的Exception类是ArithmeticException的子类,而你的程序抛出的就是ArithmeticException类异常,那么在第1个catch语句捕获到的ArithmeticException类异常,同时也属于Exception类异常,…
在java中的方法后面加个throws抛出异常有什么作用…
答:把异常抛给调用它的地方,如果你不加的话,main里的try catch是拿不到 这个异常的。也就是说,你show方法出错了。上一次也不知道怎么回事。。。 同时,你加上throw exception。调用 的地方就必须try catch,不然编译都不过。。这样代码就更健壮…
Java中异常的声明和抛出异常有什么区别?比如方法p…
答:这2个都是异常的声明,声明异常不一定要抛出,可以自己捕获异常并处理,也可以抛出给调用它的函数,如果都没有捕获就是没有使用try{}catch(),会一层层往外抛出。 还有RuntimeException及其子类不用声明异常,就是不用在函数上加throws Exception。
java中异常捕获后不处理再抛出什么意思?
答:这种情况一般是为了处理必须catch的异常, 也就是受检的异常, 之后, 再讲这个异常翻译成上层认识的异常。 其实, 你可以理解成做异常的转译, 以便与最外层的异常处理认识。 比如, 在最外层, 从业务上讲, 你只定义了 AException, BExceptio…
java异常的问题:在catch块中抛出异常和直接抛出处…
答:如果你向上层进行抛出的话,那么上层就要对这个可能出现的异常进行处理,总不能一直抛到客户那里吧,那这就算失败了,因此捕捉异常是捕捉给开发人员看得,方便与调试bug,捕捉异常的语句块会执行catch外面的后面的语句(有点绕),抛出则是直接给上一层进…
java手动throws异常和系统自动抛异常有什么区别?
答:不是太明白什么叫手动throw exception。如果你是说自己的代码里有throw这样的语句的话,那我可以告诉你,任何exception都是这样的代码产生的。你自己的代码中加入throw语句的灵活性在于 1. 你可以定义自己的exception class,而不一定要用Java库…
java异常抛出异常后捕捉和不抛出直接捕捉有什么区别
throw; 2. 抛出异常异常后- 意味着catch代码块后面就不再执行了; 不抛出直接捕捉- 意味着catch代码块后面还会继续执行。 ps: 不知道回答的对不对,不过希望对你有帮助…
Java中的异常的捕获和抛出是什么意思,有什么区别
捕获异常是在已知方法中会产生(或不完全确定,但是可能会产生)异常的情况下,对能产生异常的代码部分进行的try catch处理 假设方法A 声明的时候有声明抛出异常 void A() thro…
Java抛出异常与发生异常的区别
来橧分
在Java中抛出和捕获异常,如果我不知道会出现什么异常,该怎么…
直接捕获最高级的exception异常 打印出来看看就知道了
JAVA异常中的 捕捉与抛出
try中包括了一段可能抛出异常的代码。catch可以捕获到相应的异常,再进行相应的处理。 抛出可以手工throw,也有方法在有异常时不捕获,而是抛给上级处理,这样就要上级cat…
java中什么时候该捕获异常 什么时候该传递异常?
捕获异常:通常在运行之前java不报错,但是运行后可能会出现某些未知的错误,但是还不想直接抛出到上一级,那么就需要通过”try{}catch”的形式进行异常捕获,之后根据不同的异常…
java中什么是抛出异常?如何抛出异常?
有异常的话,把鼠标放到那行的调用方法上。他就出来一个小框,显示出这行代码要出现的所有异常。如果你想复制他就按F2就可以复制它的异常了进行捕获就可以了。试试看吧…
Java中异常的声明和抛出异常有什么区别?比如方法p1可能会有…
这2个都是异常的声明,声明异常不一定要抛出,可以自己捕获异常并处理,也可以抛出给调用它的函数,如果都没有捕获就是没有使用try{}catch(),会一层层往外抛出。 还有Runtime…
JAVA中的抛出异常有什么用
你在调用函数时,你是怎么知道函数调用是否成功的?一般是根据函数返回值来判断,比如… 捕获的异常对象获取更多的出错信息。 在java里,throw关键字是用在语句里面抛出异常…
Java捕获oracle抛出的自定义异常问题
JAVA没法子捕获到你那个异常 可以考虑你那个异常的SQLSTATE,然后通过判断SQLSTATE来作为你特定异常

猜你喜欢

转载自blog.csdn.net/wuruijiang/article/details/78971631