j***a高级语言异常处理,j***a 高级语言

kodinid 3 0

大家好,今天小编关注到一个比较意思的话题,关于java高级语言异常处理问题,于是小编就整理了2个相关介绍Java高级语言异常处理的解答,让我们一起看看吧。

  1. java.lang.IOException是什么异常?
  2. 在JAVA中捕获异常后throw自定义异常是不优雅的吗?

JAVA.lang.IOException是什么异常?

=。=|IO流异常。一般在读写数据的时候会出现这种问题。j***a内部数据的传输都是通过流,或者byte来进行传递的。就行一个文本文件。你可以通过in流写入到j***a中,同时也可以通过out流从j***a(计算机内存中)返还给具体的文件。

在J***A中捕获异常后throw自定义异常是不优雅的吗?

No,实际上,在很多框架中都***用了这种方式

java高级语言异常处理,java 高级语言-第1张图片-安济编程网
图片来源网络,侵删)

1.ReThrow

自定义异常,用来更好地进行异常隔离,标识异常的类型,ID,自定义消息等,用于LOG等

2.对第三方库的异常进行包装,抽象化,保持与你的框架异常定义一致性,便于你框架对不同异常的处理

3.restful Api,统一异常管理

java高级语言异常处理,java 高级语言-第2张图片-安济编程网
(图片来源网络,侵删)

你换个角度考虑,如果把A异常包装成B异常确实是不规范的做法,应该禁止使用,那么我们的代码会变成什么样?

比如系统底层,不管是查询数据库还是调用某个REST服务,本质都是访问网络,那么访问网络必然抛出IOException、SocketTimeoutException等异常,但因为不能对这些异常再次包装,所以要么catch住,打印一下日志然后返回一个false代表本次操作失败,要么就是把这些底层异常层层往上抛,然后在最前端的Controller/Action/Servlet里处理,或者Controller/Action/Servlet也不处理,继续抛、抛给框架或者容器,那么这样是不是就规范了呢?是不是就优雅了呢

不一定。在 J***a 中,捕获异常后抛出自定义异常是一种常见的做法,这可以使代码更清晰,易于理解和维护。

java高级语言异常处理,java 高级语言-第3张图片-安济编程网
(图片来源网络,侵删)

在捕获异常时,如果只是简单地将异常重新抛出,则不会有什么实际的好处。但是,如果你在捕获异常后抛出自定义异常,可以使代码更清晰,易于理解和维护。因为自定义异常可以给异常赋予更多的上下文信息,方便代码的更好理解。

因此,在 J***a 中,捕获异常后抛出自定义异常不一定是不优雅的。这取决于你如何实现它以及它在代码中的作用。如果它有助于使代码更清晰,易于理解和维护,那么它是优雅的。

不能这么说吧,JDK自带的异常毕竟不能完全描述“代码运行过程中的所抛出的所有问题”,比如:参数为空,参数不正确,数据无法查找,调用第三方程序异常……的情况,所以自定义异常在所难免,我们将异常一般在表现层需要做“合适的处理,防止异常抛出到页面上”,如果全用JDK的异常,那么我们就如何区分?不可能所有的错误,我们都返回的是“系统繁忙,请稍后重试!”,所以不认为throw自定义异常就不优雅了,如果感觉不优雅我们可以***用切面上处理异常,核心代码中没有异常信息,这就优雅了!!!

throws语句

如果一个方法可以引发异常,而它本身并不对该异常进行处理,那么该方法必须将这个异常抛给调用者可以使程序能够继续执行下去,这时候就要用到throws语句。在方法体中可以是引发异常列表中的任何一种异常及其子类型的异常。throws用来声明一个方法可能会抛出所有的异常,它跟在方法名称的后面。如果有多个异常,则使用逗号将其分开。

throw语句

throw语句通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。

到此,以上就是小编对于j***a高级语言异常处理的问题就介绍到这了,希望介绍关于j***a高级语言异常处理的2点解答对大家有用。

标签: 异常 定义 处理