浅谈java异常处理问题

本文详细介绍了Java中的Error与Exception的区别,探讨了异常处理的两种主要方式:抛出和捕获,并通过具体示例展示了如何处理常见的RuntimeExceptions,如算术异常、空指针异常等。此外还介绍了自定义异常的方法。
摘要由CSDN通过智能技术生成

又到了开心的写博客时间!
这次的内容就围绕异常处理这一块展开吧!

在这里插入图片描述
1.java Error类和Exception类的区别?
(1)Error是所有错误类的祖先类,Exception类是所有异常类的祖先类,二者是平行类,都是Trowable类的子类。
(2)error类不是程序需要捕获和进行处理的,当error发生的时候,程序便会终止;
exception类程序可以进行捕获和处理,当异常发生的时候,虚拟机系统会根据异常的类型,产生相应的异常对象,程序会应对这些异常对象进行相应的处理

2.异常处理的两种方式及区别?
处理异常的两种方式分别是抛出捕获
在这里插入图片描述

(1)抛出
隐式抛出:
在这里插入图片描述
在这里插入图片描述

b为0,处以一个为零的数便会出现除0异常;但是没有声明此处会出现异常,为隐式的抛出(所给例子较简单,异常很明显,但在实际应用情况下,当代码块较大较多的时候,就难以看出。只要是没有声明的,都算隐式抛出异常)

显式抛出:
则需将public static void main(String[] args)改为
public static void main(String[] args)throws ArithmeticException

(2)捕获:一般用try-catch-finally来捕获异常处理
语法结构为:
在这里插入图片描述
finally是这个语句块的统一出口,一般用于一些善后的操作,如释放资源,关闭文件等,是可选的部分,一旦选定,必定执行

例如:
在这里插入图片描述
在这里插入图片描述
除零异常便被程序中catch语句捕获了,但是“a=s/b”后面的system语句无法执行,要希望system语句能执行,则需要异常嵌套捕获。
例如:
在这里插入图片描述
结果为:
在这里插入图片描述
两者的区别:
抛出异常是算法本身不处理这个异常,需要调用的时候处理该异常,只是提醒此处可能会有异常的产生。
捕获异常便是算法本身对该异常进行相应的处理。

3.runtime exception类中的算术异常,空指针异常,类转换异常,数组越界异常的抛出并捕获举例
(1)算术异常:常见包括除0异常,数值越界,对数真数小于0,开平方数小于0等等,除0异常见上面的例子。

(2)空指针异常
在这里插入图片描述
x数组尚未分配内存空间,直接使用就会出现空指针异常
在这里插入图片描述
(3)类转换异常:当试图将对某个对象强制执行向下转型,但该对象又不可转换又不可转换为其子类的实例时将引发该异常
通常出现在强制类型转换的时候
例如:
在这里插入图片描述
父类的引用没有指向字类对象,强制类型转换便会出现类转换异常
在这里插入图片描述
(4)数组越界异常
例如:
在这里插入图片描述
在这里插入图片描述
str为空数组,arg[1]发生越界;

4.自定义异常类
异常对象往往由系统自动产生,但是特殊情况下也可以自定义创建异常对象。

throw new 异常类
例如:
在这里插入图片描述
在这里插入图片描述
自定义一个异常为 c等于2
自定义异常对java系统来说不是异常,但是对于一些特定的应用程序来说就是异常,可以通过自定义异常实现功能的正常运行或者是流程的跳转。

内容不高深,还是希望对初学java的人有些帮助,若有错误,欢迎大家指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值