如何自定义异常Java

Java中有自有的异常,例如,NullPointerException,ArithematicException,NumberFomatException,IndexOutOfBoundsException,OutOfMemoryException等等,这些事Java工程师定义的uncheckedException异常,是比较常见的异常,是运行时异常,同时也有checkedException这一类是编译时异常,是需要你在运行之前就需要处理的异常,例如,FileNotFoundException, IOException, SQLException,我们常见的处理方法是使用throws关键字和使用try{}catch(){}的方法,具体如何使用我们在下面讲解,但是由于业务多种多样,这些异常不可能涵盖每一种情况,这就需要企业自定义异常,Java同时也支持用户自定义异常,而自定义异常需要将创建的类名继承Exception关键字,这里我们默认是定义编译时异常,如果是想自定义运行时异常,则需要去实现RuntimeException,而大多数的业务的去定义编译时异常,下面是我自定义的一个异常,如图

 自定义编译时异常一般是通过使用有参构造方法去调用父类的有参构造方法,父类有参构造方法(Exception),再去调用最终级的Throwable类,我们可以通过去观察FileNotFoundException是否是这种流程,如图

 

 情况确实如此,无论是在Java自带异常还是,用户自定义异常,他们都是去掉用父类有参或者无参构造方法,异常这种一层一层的去调用父类构造方法,是异常发生的基本流程,最终干实事的是最终类Throwable,所以上述的我的自定义的异常是符合异常的基本规范的,最后的是如何去使用自定义的编译时异常去规范我们的程序呢,下面是我对异常的使用,如图

下面时控制台输入,如图

 对于一些业务,我们不允许出现年龄小于零的情况,就可以使用这种自定义的编译时异常去规范,也可以起到提醒是效果,可以注意到,我在上面用到了两个关键字一个是throws,一个是throw,前者是出现在方法标签上面是用类抛异常类的,这些异常类是throw所抛的异常类,而后者是用来抛异常类对象的,这异常类的构造方法,我传参为”年龄不得为零”,当异常抛给了调用者,调用者再次去抛给main()方法,mian()方法再次将异常抛给JVM,JVM最终会终止程序,这也就是为什么后面的”java”并没有在控制台上输出,然后在控制台上打印出栈信息,可以看到上面有”年龄不得为零”的字符串,我们可以发现如果出现了异常,那么程序就会终止,如果后面还有业务的话,这显然对于一个程序的运行是不友好的,Java中还提供了一种方法也就是上面谈到的try{}catch(){}方法,这种方法可以将异常给抓住,自行解决而不传给JVM,这就大大的提高了程序的效率,下面是修改后的代码,如图

 下面是控制台输出

 我们可以开到上面可以将”java”字符串打印出来,这就以为者异常并没有抛给JVM而是自行解决,在控制台上打印出栈信息,但是,我们有时使用并不需要打印完全的栈信息,我们就只需要”年龄不得为零”这一个信息,这就需要我们去调用另一个方法,getMessage(),这个方法是属于最终类Throwable的,如图

 下面是他的具体用法,如图

下面是控制台输出,如图

 

这样看是不是舒服多了,自定义编译时异常的功能用处广泛,应用的方向广泛,也体现Java高度面向对象的包容性。

版权声明:本文为博主作者:春上树原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/weixin_74077856/article/details/131454309

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2024年4月22日
下一篇 2024年4月22日

相关推荐