Java提高篇之异常(上)
作者:chenssy 发布时间:[ 2016/7/12 11:38:07 ] 推荐标签:测试开发技术 异常
而Exception是程序可以处理的异常。它又分为两种CheckedException(受捡异常),一种是UncheckedException(不受检异常)。其中CheckException发生在编译阶段,必须要使用try…catch(或者throws)否则编译不通过。而UncheckedException发生在运行期,具有不确定性,主要是由于程序的逻辑问题所引起的,难以排查,我们一般都需要纵观全局才能够发现这类的异常错误,所以在程序设计中我们需要认真考虑,好好写代码,尽量处理异常,即使产生了异常,也能尽量保证程序朝着有利方向发展。
所以:对于可恢复的条件使用被检查的异常(CheckedException),对于程序错误(言外之意不可恢复,大错已经酿成)使用运行时异常(RuntimeException)。
java的异常类实在是太多了,产生的原因也千变万化,所以下篇博文我将会整理,统计java中经常出现的异常,望各位关注!!
四、异常使用
在网上看了这样一个搞笑的话:世界上真情的相依,是你在try我在catch。无论你发神马脾气,我都默默承受,静静处理。对于初学者来说异常是try…catch,(鄙人刚刚接触时也是这么认为的,碰到异常是try…catch)。个人感觉try…catch确实是用的多也是实用的。
在异常中try快包含着可能出现异常的代码块,catch块捕获异常后对异常进行处理。先看如下实例:
public class ExceptionTest {
public static void main(String[] args) {
String file = "D:\exceptionTest.txt";
FileReader reader;
try {
reader = new FileReader(file);
Scanner in = new Scanner(reader);
String string = in.next();
System.out.println(string + "不知道我有幸能够执行到不.....");
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("对不起,你执行不到...");
}
finally{
System.out.println("finally 在执行...");
}
}
}
这是段非常简单的程序,用于读取D盘目录下的exceptionText.txt文件,同时读取其中的内容、输出。首先D盘没有该文件,运行程序结果如下:
java.io.FileNotFoundException: D:exceptionTest.txt (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at java.io.FileReader.<init>(FileReader.java:41)
at com.test9.ExceptionTest.main(ExceptionTest.java:19)
对不起,你执行不到...
finally 在执行...
从这个结果我们可以看出这些:
1、当程序遇到异常时会终止程序的运行(即后面的代码不在执行),控制权交由异常处理机制处理。
2、catch捕捉异常后,执行里面的函数。
当我们在D盘目录下新建一个exceptionTest.txt文件后,运行程序结果如下:
1111不知道我有幸能够执行到不.....
finally 在执行...
11111是该文件中的内容。从这个运行结果可以得出这个结果:不论程序是否发生异常,finally代码块总是会执行。所以finally一般用来关闭资源。
在这里我们在看如下程序:
public class ExceptionTest {
public static void main(String[] args) {
int[] a = {1,2,3,4};
System.out.println(a[4]);
System.out.println("我执行了吗???");
}
}
程序运行结果:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at com.test9.ExceptionTest.main(ExceptionTest.java:14)
各位请注意这个异常信息和上面的异常信息错误,为了看得更加清楚,我将他们列在一起:
java.io.FileNotFoundException: D:exceptionTest.txt (系统找不到指定的文件。)
Exception in thread "main" <strong>java.lang.ArrayIndexOutOfBoundsException:</strong> 4
在这里我们发现两个异常之间存在如下区别:第二个异常信息多了Exception in thread ”main”,这显示了出现异常信息的位置。在这里可以得到如下结论:若程序中显示的声明了某个异常,则抛出异常时不会显示出处,若程序中没有显示的声明某个异常,当抛出异常时,系统会显示异常的出处。
由于这篇博文会比较长,所以分两篇来介绍。下篇博文主要介绍Java异常的自定义异常、异常链、异常的使用误区、使用异常注意地方以及try…catch、throw、throws。望各位看客关注!!!!
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Java性能测试有哪些不为众人所知的原则?Java设计模式??装饰者模式谈谈Java中遍历Map的几种方法Java Web入门必知你需要理解的Java反射机制知识总结编写更好的Java单元测试的7个技巧编程常用的几种时间戳转换(java .net 数据库)适合Java开发者学习的Python入门教程Java webdriver如何获取浏览器新窗口中的元素?Java重写与重载(区别与用途)Java变量的分类与初始化JavaScript有这几种测试分类Java有哪四个核心技术?给 Java开发者的10个大数据工具和框架Java中几个常用设计模式汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等
更新发布
功能测试和接口测试的区别
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热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南