1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java 异常 抛 效率_一文带你理清Java异常体系 提高开发效率

java 异常 抛 效率_一文带你理清Java异常体系 提高开发效率

时间:2018-07-05 20:29:48

相关推荐

java 异常 抛 效率_一文带你理清Java异常体系 提高开发效率

一、概述

我们在项目开发的过程中使用异常是必不可少的事情,那么异常会带来哪些好处呢?

我们知道异常带来的最明显的好处是,它能够降低错误处理代码的复杂度。不使用异常的话,我们就必须检查一些特定的错误,并且在程序中许多地方都要去处理它。而当我们使用异常的时候,就不需要在方法的调用处进行检查,因为异常机制能够捕获到这个错误信息。然后我们只需要在一个地方处理这个错误。这种处理方式不仅能节省代码量,而且还能把“描述在正常执行过程中做什么事”的代码(try)和“出了问题怎么办”的代码(catch)之前进行分离。

总之,与之前处理错误的方法相比较,异常机制让代码可读性更强,使编码更有条理性,调试更加有序。

在程序员的开发过程中,由于程序员没有考虑的十分周全,或者遗漏掉某些特定的场景,而会产生一系列的bug,如系统中存在的脏数据、打开并不存在的文件、进行相除运算分母为0等情况。为了能够处理这些在程序运行过程中出现的错误,Java专门引入了异常类。

二、异常产生的原因及使用原则

异常产生的原因主要有三种情况,详情如下:

1、Java内部错误发生异常(Java虚拟机发生了内部错误)。

2、编写的程序代码中产生的异常,例如空指针异常、类找不到异常、IO异常以及数组越界异常等。这种异常称为未检査的异常,一般需要在代码里面处理这些异常。

3、通过throw语句抛出的异常,这种异常称为检査的异常,一般用来告知该方法的调用者一些必要的信息。

Java是通过面向对象的方式来处理异常的。在该方法的运行过程中,一旦发生了异常,则该方法就会产生一个代表该异常的对象,并且把它交给运行时的系统,运行时系统寻找相应的代码来处理这一异常。

我们把生成的异常对象提交给运行时系统的过程称为拋出异常即throw。运行时系统在方法的调用栈中查找,一直到能够找到处理该类型异常对象的时候,这一个过程称为捕获异常即catch。

Java异常会强制要求用户去考虑程序的强健性以及安全性。如果将异常处理应用来控制程序的正常流程是不合理的,他的主要作用就是为了捕获程序运行过程中发生的异常并进行相应处理。本文来源于公众号:【Java学习提升】 专注于Java领域技术分享,Java知识体系学习、分享面试经验,让我们结伴而行,共同成长!

我们编写代码处理某个方法可能出现的异常,应该遵循以下三个原则:

1、在可能出现异常的方法中使用try catch语句来捕获异常。

2、如果一个方法被覆盖时,那么覆盖它的方法必须拋出相同的异常或异常的子类。

3、如果父类抛出多个异常时,那么覆盖方法必须拋出那些异常的一个子集,而不能拋出新的异常。

三、Java中常见的异常类型及体系结构图

异常体系结构图:

Java的异常主要分为两大类:

1、Checked异常

是编译器在编译时进行校验的,通过throws语句或者try{}cathch{} 语句块来处理检测异常。编译器会分析哪些异常会在执行一个方法或者构造函数的时候抛出。

2、Unchecked异常(运行时异常RuntimeException)

这种异常不需要编译器来检测。RuntimeException是所有可以在运行时抛出的异常的父类。一个方法除了要捕获异常外,如果它执行的时候可能会抛出RuntimeException的子类,那么它就不需要用throw语句来声明抛出的异常。

举个栗子,我们来看下面的这段代码:

程序并没有报错,但是我们都知道0是不能当做被除数的,当我们运行的时候会报如下的错

针对这样的情况我们该如何处理呢,正确的处理方式是捕获这个异常并处理,处理结果如下:

我们来运行这段代码,结果如下:

类似像上面程序中出现的异常情况,就叫运行异常。运行异常一般都可以正常运行,只有在特定的场景下会发生异常。只要我们对运行异常类有一个清晰的认识,就能解决大多数程序上面的问题了。

原创声明:本文为【Java学习提升】原创博文,转载请注明出处。

本文来源于公众号:【Java学习提升】 专注于Java领域技术分享,Java知识体系学习、分享面试经验,让我们结伴而行,共同成长!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。