浅识异常

来源:互联网 发布:济南软件测试培训 编辑:程序博客网 时间:2024/05/17 07:43

学习到java异常的时候,抱着很天真的想法,写的程序怎么能允许有错误呢,于是很坚定的跳过了异常。只知道使用try-catch捕捉异常,不知其然。现在看来也是很茫然。
(哈哈菜鸟一枚)~~ 整理大神们的博客,加深理解。
一.异常体系结构
异常体系结构图

Throwable 类是 Java 语言中所有错误或异常的超类(这就是一切皆可抛的东西)。它有两个子类:Error和Exception。
Exception:它指出了合理的应用程序想要捕获的条件。Exception又分为两类:
一种是CheckedException,一种是UncheckedException。这两种Exception的区别主要是CheckedException需要用try…catch…显示的捕获,而UncheckedException不需要捕获。通常UncheckedException又叫做RuntimeException。

二.为什么要有异常

异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,我们知不觉中使用if…else…来控制异常了,同一个异常或者错误如果多个地方出现,那么你每个地方都要做相同处理,感觉相当的麻烦!
 Java语言在设计的当初就考虑到这些问题,提出异常处理的框架的方案,所有的异常都可以用一个类型来表示,不同类型的异常对应不同的子类异常。这是Java语言设计者的高明之处。
三.异常的处理

1、运行时异常
   RuntimeException类及其子类都被称为运行时异常,这种异常的特点是Java编译器不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try…catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。例如,当除数为零时,就会抛出java.lang.ArithmeticException异常。
 2、受检查异常
  除了RuntimeException类及其子类外,其他的Exception类及其子类都属于受检查异常,这种异常的特点是要么用try…catch捕获处理,要么用throws语句声明抛出,否则编译不会通过。
 3.最佳的处理方式
   1.对于运行时异常,我们不要用try…catch来捕获处理,而是在程序开发调试阶段,尽量去避免这种异常,一旦发现该异常,正确的做法就会改进程序设计的代码和实现方式,修改程序中的错误,从而避免这种异常。捕获并处理运行时异常是好的解决办法,因为可以通过改进代码实现来避免该种异常的发生。
  2.对于受检查异常,没说的,老老实实去按照异常处理的方法去处理,要么用try…catch捕获并解决,要么用throws抛出!
  3.对于Error(运行时错误),不需要在程序中做任何处理,出现问题后,应该在程序在外的地方找问题,然后解决。
  
四.Java异常处理的原则和技巧
1、避免过大的try块,不要把不会出现异常的代码放到try块里面,尽量保持一个try块对应一个或多个异常。
2、细化异常的类型,不要不管什么类型的异常都写成Excetpion。
  3、catch块尽量保持一个块捕获一类异常,不要忽略捕获的异常,捕获到后要么处理,要么转译,要么重新抛出新类型的异常。
  4、不要把自己能处理的异常抛给别人。
  5、不要用try…catch参与控制程序流程,异常控制的根本目的是处理程序的非正常情况。

0 0
原创粉丝点击