本文主要介绍“如何理解Java的异常”。在日常操作中,相信很多人对于如何理解Java的异常都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮助大家解决“如何理解Java的异常”的疑惑!接下来,请和边肖一起学习!
背景
无论是在工作中,还是在面试中,异常都是非常重要的。作为Java开发人员,有必要学习如何处理异常,哪些异常必须自己处理,哪些异常可以抛出等等。
生活中总有意想不到的惊喜和意外,我们的代码也是如此。
如果你不明白,佛陀就不能保佑你。
今天,我们来谈谈Java异常。我们可以把Throwable作为Java异常的根类(祖先)。由于实现类太多,下面列出了一些常见的实现类。
Error
错误:程序不需要处理的系统级错误和异常,是Java运行环境中的内部错误或硬件问题。
例如,内存资源不足。
对于这种错误,程序基本上无能为力,别无选择,只能退出运行。它由Java虚拟机抛出。
Exception
异常:表示需要被程序捕获或处理的异常。它处理由程序设计缺陷引起的问题或由外部输入引起的一般问题,这些问题必须由程序处理。
异常分为运行时异常和检查异常。
RuntimeException(运行时异常)
表示程序无法恢复的异常。原因通常是错误的操作。建议终止逻辑。因此,编译器不会检查这些异常。
CheckedException(受检查异常)
是程序可以处理的异常,也就是可以修复的异常(程序本身接受异常并进行处理),所以称为checked exception。
有两种方法可以处理已检查的异常:
当前的方法显然知道如何处理异常,所以程序应该使用try - catch代码块来捕获异常,然后在相应的catch模块中修复异常。
当前的方法不知道如何处理这个异常,所以当它应该被定义时,它声明它已经用完了。
Throwable 类常用方法?
GetMessage()方法:在异常发生时返回详细信息。
GetCause()方法:获取导致当前可抛出异常的可抛出异常。
GetStackTrace()方法:获取Throwable对象封装的异常信息。
PrintStackTrace()方法:在控制台上打印。
请列出 5 个运行时常见异常?
NullPointerException
IndexOutOfBoundsException
ClassCastException
ArrayStoreException
BufferOverflowException异常
异常处理有哪些关键字?
抛出异常:抛出,抛出。
异常被捕获:尝试,捕获,最后。
throw 与 throws 的区别 ?
Throw,用于在程序中显式抛出异常实例。
抛出,用于指示此方法中未处理的异常。每个方法都必须明确指出哪些异常没有被处理,以便方法的调用方可以防止可能的异常。最后,多个异常用逗号分隔。
异常处理中的Finally语句。
块的重要性?
不管程序是否发生了异常, finally 语句块都会被执行,甚至当没有catch 声明但抛出了一个异常时, finally 语句块也会被执行。
finally 语句块通常用于释放资源,如 I/O 缓冲区、数据库连接、释放锁等等。
异常使用方式
异常处理规则
如何自定义异常?
除了JDK定义好的异常类以外,在开发过程中我们也可以根据业务的异常情况自定义异常类。
用户自定义异常都应该继承Exception基类,如果用户想自定义Runtime异常,则应该继承RuntimeException基类。
定义异常时,通常有两个构造方法:
-
无参构造方法
-
有参构造方法,这个参数是字符串,这个字符串作为对该异常信息描述,也就是getMessage()方法的返回值(比如说:“用户密码有误”、“xx接口返回参数为空”等)。
不过在项目中可能没这么简单,可能还会对其进行再次封装。
但是基本上都是有两个参数:code+msg;
code:主要是对业务中的异常进行归类,结合Http的code来定义。
msg:主要是业务异常的信息提示。
你们项目中的自定义异常类是如何封装的呢?不知道的就回去翻翻你们项目中的自定义是如何写的,这就把学习和实践结合起来了。
到此,关于“如何理解对Java的异常”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/43712.html