异常机制
1.思考:什么是异常/h3>
软件程序在运行过程中,可能会遇到例如用户输入不合你要求、文件不存在、内存满了等异常问题,称为Exception。异常指程序运行中出现的不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常发生在程序运行期间,它影响了正常的程序执行流程。
2.常见的三种类型异常:
- 检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。 例如要打开一个不存在的文件时,一个异常就发生了,这些异常在编译时不能被简单的忽略。
- 运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在被编译时被忽略。就好比两个没有方法体的方法相互调用,我们由于知道程序是怎样运行的,因此这类异常我们可以一眼看出。
- 错误Error:错误与异常不同,是属于脱离程序员控制的问题。例如,当栈溢出时,一个错误就发生了,他们在编译时也检查不到的。
3.异常体系结构
例二:异常的级别区分
例三:try-catch补充
例四:主动抛出异常
自定义异常
使用Java内置的异常类可以描述在编程时出现的大部分异常情况。除此之外,用户还可以自定义异常。用户自定义异常类,只需要继承Exception类即可。
在程序中使用自定义异常类:大体分为以下几个步骤
- 创建自定义异常类。
- 在方法中通过throw关键字抛出异常对象。
- 如果在当前抛出异常的方法中处理异常,可以使用try-catch语句捕获并处理;或者在方法的声明处通过throws关键字指明要抛出给方法调用者的异常,继续进行下一步操作。
- 在出现异常方法的调用者中捕获并处理异常。
创建自定义异常类,通过继承Exception类实现:
另外创建一个类,对自定义的异常类进行测试:
运行结果如下:
总结:
- 处理运行异常时,采用逻辑去合理规避同时辅助try_catch处理(不至于程序突然卡死)。
- 在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常。
- 对于不确定的代码,也可以加上try-catch,处理潜在的异常。
- 尽量去处理异常,切记不要只是简单的调用PrintStackTrace()去打印输出。
- 具体如何处理异常,可以使用判断条件去增加处理的代码块,要根据不同的业务需求和异常类型去决定。
- 尽量添加finnly语句块去释放占用的资源(如Scanner等IO流)。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树来源:0尼可乐0
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!