Java中的异常处理

异常

最近学习了关于异常的知识,进行一下总结

假设一个Java程序在运行过程中出现了错误,用户希望程序能够采用一些理智的行为来处理,程序应该:
1.返回到一种安全的状态,并能够让用户执行一些其他的命令
2.允许用户保存所有的操作结果,并以适当的方式终止程序

程序中可能出现的错误一般有一下4种:
1.用户输入错误
除了那些不可避免的键盘输入错误外,还包括用户输入的语法错误
2.设备错误
硬件出现问题
3.物理限制
磁盘满了,可用存储空间已被用完
4.代码错误
程序方法有可能无法正确执行

1.异常分类

先上一张图:
在这里插入图片描述
异常对象都是派生与Throwable类的一个实例,所有的异常都是有Throwable继承而来。

Error类的层次结构描述了Java运行时的内部错误和资源耗尽错误,出现这种错误时,我们只能告知用户,并不能抛出。

Exception类又分为两个分支,分别是IOException和RuntimeException。RuntimeException异常是又程序错误导致的异常,例如错误的类型转换、数组访问越界、访问空指针等。而除RuntimeException异常外的其他异常,包括例如试图在文件尾部后面读取数、试图打卡一个不存在的文件等。

Java语言将派生与Error类或RuntimeException类的所有异常成为未检查异常,所有其他的异常称为已检查异常。

2.声明已检查异常

如果遇到了无法处理的情况,那么Java的方法可以抛出一个异常。一个方法不仅要告诉编译器需要返回什么类型的值,还需要告诉编译器可能发生的错误有哪些。所以我们要在方法的首部声明所有可能抛出的异常。但并不是所有可能发生的异常都需要声明,只需记住下面四种情况应该抛出异常:
1.调用一个抛出已检查异常的方法
2.程序运行过程中发现错误,并且利用throw语句抛出一个已检查异常
3.程序出现错误
4.Java虚拟机和运行时库出现的内部错误
总之,一个方法必须声明所有可能抛出的已检查异常,而未检查异常Error不可控制,RuntimeException可以避免发生。

3.捕获异常

对于异常除了抛出这种解决办法,还有另一种方法就是捕获(try…catch)。如果在try语句块中的任何代码抛出了一个在catch子句中说明的异常类,那么程序将跳过try语句块的其余代码,执行catch子句中的处理器代码。那么问题来了,到底是抛出还是捕获呢?我们只捕获那些知道如何处理的异常,而将那些不知道如何处理的异常抛出继续传递给方法的调用者。

本文内容参考了《Java核心技术卷一》
我是骑着火箭的蜗牛,一个自学Java后端3个月的小白,正在努力的成长。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值