文档章节

java异常

蜀山下的鱼
 蜀山下的鱼
发布于 2015/04/29 00:43
字数 941
阅读 25
收藏 1

异常结构:


try {
   
  } catch (Exception e) {
   // TODO: handle exception
  }finally{
   
  }

   

  异常机制:程序出现错误后程序如何处理,控制权交给异常处理器。(异常都是在运行中的,不是编译
时的)

     异常处理流程:遇到错误,方法立即结束,同时抛出一个异常对象。调用该方法的程序停止,并搜索

一个可以处理该异常的,并执行其中的代码。

     Error及RunTimeException及其子类为未检测异常,及自己会跑出不需要程序员抛出;而其他为已检测

异常,需要程序员抛出。

     1、Error体系描述了java运行中的内部错误以及资源耗尽的情形,一般由虚拟机抛出。

     2、Exception体系包括RunTimeException和其他非RunTimeException体系:
     
       (1)RunTimeException体系包括错误的类型转换、数组越界访问和试图访问空指针。一定是程序员的

错误。例如可以通过检查数组下标和数组边界来避免数组越界访问异常。

       (2)其他一般都是外部错误,例如试图从文件尾后读取数据,这并不是数据本身的错误,而是在应用

环境中出现的外部错误。

    客户程序员调用会抛出异常的库函数(库函数的异常由库程序员抛出);客户程序员自己使用throw语

句抛出异常。遇到Error,程序员一般是无能为力的;遇到RuntimeException,那么一定是程序存在逻辑错

误,要对程序进行修改(相当于调试的一种方法);只有已检查异常才是程序员所关心的,程序应该且仅应

该抛出或处理已检查异常。

 

     异常处理:

     1、既然捕获了异常,就要对它进行适当的处理。不要捕获异常之后又把它丢弃,不予理睬。

     2、在catch语句中尽可能指定具体的异常类型,必要时使用多个catch。不要试图处理所有可能出现的异常。

     3、保证所有资源都被正确释放。充分运用finally关键词。  
     4、在异常处理模块中提供适量的错误原因信息,组织错误信息使其易于理解和阅读。例如当前正在执行的类、方法和其他状态信息,包括以一种更适合阅读的方式整理和组
织printStackTrace提供的信息。

     5、尽量减小try块的体积。

     6、全面考虑可能出现的异常以及这些异常对执行流程的影响。

 

访问异常信息:

                 getMessage():返回该异常的详细描述字符串。

                       printStackTrace():将该异常的跟踪栈信息输出到标准错误输出。

                 printStackTrace(PrintStream s):将该异常的跟踪栈信息输出到指定输出流。

                 getStackTrace():返回该异常的跟踪栈信息。

java异常跟踪栈:

                       面向对象的应用程序运行时,经常会发生一系列方法调用,从而形成“方法调用栈”,异常的传播则相反:只要异常没有被完全捕获,异常就会从发生异常的方法逐渐向外传播,首先传给该方法的调用者,再传给调用者的调用者。。。。直至最后到main方法,如果main方法依然没有处理该方法,JVM则会终止该程序,并打印异常的跟踪栈信息。

 

常见异常:

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

文件未找到异常:FileNotFoundException

方法未找到异常:NoSuchMethodException

             索引出界:IndexOutOfBoundsException

        非法参数 :IllegalArgumentException

                               

 

 

本文转载自:http://blog.csdn.net/caiwenfeng_for_23/article/details/8252534

蜀山下的鱼
粉丝 9
博文 405
码字总数 0
作品 0
广州
高级程序员
私信 提问
JVM规范系列第6章:Java虚拟机指令集

一条 Java 虚拟机指令由一个特定操作的操作码和零至多个操作所使用到的操作数所构成。 虚拟机指令 = 操作码 + 操作数。 其中,操作码值分别为 254(0xfe)和 255(0xff),助记符分别为 impd...

陈树义
2018/12/19
0
0
06-《深度拆解JVM》之JVM是如何处理异常的?

一、问题引入 今天我们来讨论下 Java 虚拟机的异常处理。众所周知,异常处理的两大组成要素是抛出异常和捕获异常。这两大要素共同实现程序控制流的非正常转移。 抛出异常可分为显式和隐式两种...

飞鱼说编程
2018/09/28
61
2
Java 书籍 Top 10

陈皓 http:// blog.csdn.net/haoel 下面是Java Inside上推荐的十本Java书籍(文章来源),我把中文版的也列了出来。 1)Java Language Specification, Third Edition (by James Gosling) 本书...

JavaGG
2009/09/21
12.7K
20
Java学习系列文章:说说Java中的异常

在正常的程序设计中,程序异常处理是非常关键和重要的一部分。试想一个项目中没有一个好的异常处理,这个项目会怎么样? 什么是异常 异常其实是程序上的错误,包括程序逻辑错误和系统错误。比...

java高级架构牛人
2018/06/29
13
0
Java异常处理 10 个最佳实践

异常处理是Java 开发中的一个重要部分。它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java提供了几个异常处理特性,以try,catch...

Java技术栈
2018/08/27
81
0

没有更多内容

加载失败,请刷新页面

加载更多

CSS--列表

一、列表标识项 list-style-type none:去掉标识项 disc:默认实心圆 circle:空心圆 squire:矩形 二、列表项图片 list-style-img: 取值:url(路径) 三、列表项位置 list-style-position:...

wytao1995
今天
6
0
linux 命令-文本比较comm、diff、patch

本文原创首发于公众号:编程三分钟 今天学了三个文本比较的命令分享给大家。 comm comm 命令比较相同的文本 $ cat charabc$ cat chardiffadc 比如,我有两个文件char和chardiff如上,...

编程三分钟
今天
7
0
QML教程

https://blog.csdn.net/qq_40194498/article/category/7580030 https://blog.csdn.net/LaineGates/article/details/50887765...

shzwork
今天
5
0
HA Cluster之5

对于使用heartbeat v2版的CRM配置的集群信息都是保存在一个名为cib.xml的配置文件中,存放在/var/lib/heartbeat/crm/下。CIB:Cluster Information Base,由于xml文件配置不是那么方便,所以...

lhdzw
今天
6
0
玩转Redis-Redis基础数据结构及核心命令

  《玩转Redis》系列文章主要讲述Redis的基础及中高级应用,文章基于Redis5.0.4+。本文主要讲述Redis的数据结构String,《玩转Redis-Redis基础数据结构及核心命令》相关操作命令为方便对比...

zxiaofan666
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部