Java提高篇之异常(上)
作者:chenssy 发布时间:[ 2016/7/12 11:38:07 ] 推荐标签:测试开发技术 异常
Java的基本理念是“结构不佳的代码不能运行”!!!!!
大成若缺,其用不弊。
大盈若冲,其用不穷。
在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这是所谓的智者千虑必有一失。同样的道理,计算机的世界也是不完美的,异常情况随时都会发生,我们所需要做的是避免那些能够避免的异常,处理那些不能避免的异常。这里我将记录如何利用异常还程序一个“完美世界”。
一、为什么要使用异常
首先我们可以明确一点是异常的处理机制可以确保我们程序的健壮性,提高系统可用率。虽然我们不是特别喜欢看到它,但是我们不能不承认它的地位,作用。有异常说明程序存在问题,有助于我们及时改正。在我们的程序设计当做,任何时候任何地方因为任何原因都有可能会出现异常,在没有异常机制的时候我们是这样处理的:通过函数的返回值来判断是否发生了异常(这个返回值通常是已经约定好了的),调用该函数的程序负责检查并且分析返回值。虽然可以解决异常问题,但是这样做存在几个缺陷:
1、 容易混淆。如果约定返回值为-11111时表示出现异常,那么当程序后的计算结果真的为-1111呢?
2、 代码可读性差。将异常处理代码和程序代码混淆在一起将会降低代码的可读性。
3、 由调用函数来分析异常,这要求程序员对库函数有很深的了解。
在OO中提供的异常处理机制是提供代码健壮的强有力的方式。使用异常机制它能够降低错误处理代码的复杂度,如果不使用异常,那么必须检查特定的错误,并在程序中的许多地方去处理它,而如果使用异常,那不必在方法调用处进行检查,因为异常机制将保证能够捕获这个错误,并且,只需在一个地方处理错误,即所谓的异常处理程序中。这种方式不仅节约代码,而且把“概述在正常执行过程中做什么事”的代码和“出了问题怎么办”的代码相分离。总之,与以前的错误处理方法相比,异常机制使代码的阅读、编写和调试工作更加井井有条。(摘自《Think in java 》)。
在初学时,总是听老师说把有可能出错的地方记得加异常处理,刚刚开始还不明白,有时候还觉得只是多此一举,现在随着自己的不断深入,代码编写多了,渐渐明白了异常是非常重要的。
二、基本定义
在《Think in java》中是这样定义异常的:异常情形是指阻止当前方法或者作用域继续执行的问题。在这里一定要明确一点:异常代码某种程度的错误,尽管Java有异常处理机制,但是我们不能以“正常”的眼光来看待异常,异常处理机制的原因是告诉你:这里可能会或者已经产生了错误,您的程序出现了不正常的情况,可能会导致程序失败!
那么什么时候才会出现异常呢?只有在你当前的环境下程序无法正常运行下去,也是说程序已经无法来正确解决问题了,这时它所会从当前环境中跳出,并抛出异常。抛出异常后,它首先会做几件事。首先,它会使用new创建一个异常对象,然后在产生异常的位置终止程序,并且从当前环境中弹出对异常对象的引用,这时。异常处理机制会接管程序,并开始寻找一个恰当的地方来继续执行程序,这个恰当的地方是异常处理程序,它的任务是将程序从错误状态恢复,以使程序要么换一种方法执行,要么继续执行下去。
总的来说异常处理机制是当程序发生异常时,它强制终止程序运行,记录异常信息并将这些信息反馈给我们,由我们来确定是否处理异常。
三、异常体系
java为我们提供了非常完美的异常处理机制,使得我们可以更加专心于我们的程序,在使用异常之前我们需要了解它的体系结构:如下
从上面这幅图可以看出,Throwable是java语言中所有错误和异常的超类(万物即可抛)。它有两个子类:Error、Exception。
其中Error为错误,是程序无法处理的,如OutOfMemoryError、ThreadDeath等,出现这种情况你能做的是听之任之,交由JVM来处理,不过JVM在大多数情况下会选择终止线程。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11