Java异常

原创 2015年11月19日 22:12:08

一.异常的概念

      java异常java提供的用于处理程序中错误的一种机制。

       所谓的错误是指在程序运行的过程中发生一些异常事件(如:除0溢出,数组小标越界,索要读取的文件不存在等)。

       设计良好的程序应该在异常发生时提供处理这些错误的方法,是的程序不会因为异常的发生而阻断或产生不可预见的结果。

        java程序在执行的过程中如果出现异常事件,可以生成一个异常对象,该对象封装了异常事件的信息并将被提交给Java运行时的系统,这个过程称为抛出(throw)异常。

        当Java运行时系统接收到异常的对象时,会寻找处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。

二.异常分类

     java中所有的异常都有一个共同的父类就是throwable(可抛出)。

       throwable有两个重要的子类,分别是Exception(异常)和Error(错误)。

       Error是程序无法处理的错误,表示运行应用程序中较严重的问题。

       Exception是程序本身可以处理问题。


三.异常处理机制

      在Java应用程序中,异常的处理机制为:抛出异常,捕获异常。

      抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和和异常出现时的程序状态等异常信息。

      捕获异常:在方法抛出异常之后,运行时的系统转为寻找合适的异常处理器。 潜在的异常处理器是异常发生时依次留在调用栈中的方法集合。

3.1捕获异常-

1.try-catch语句

  在java中,异常通过try-catch语句捕获。其一般语法形式为:

 

  1. try {  
  2.     // 可能会发生异常的程序代码  
  3. catch (Type1 id1){  
  4.     // 捕获并处置try抛出的异常类型Type1  
  5. }  
  6. catch (Type2 id2){  
  7.      //捕获并处置try抛出的异常类型Type2  
  8. }  
   

           关键词try后的一对大括号将一块可能发生异常的代码包起来,称为监控区域。Java方法在运行过程中出现异常,则创建异常对象。将异常抛出监控区域之 外,由Java运行时系统试图寻找匹配的catch子句以捕获异常。若有匹配的catch子句,则运行其异常处理代码,try-catch语句结束。

       匹配的原则是:如果抛出的异常对象属于catch子句的异常类,或者属于该异常类的子类,则认为生成的异常对象与catch块捕获的异常类型相匹配。

例1  捕捉throw语句抛出的“除数为0”异常。

  1. public class TestException {  
  2.     public static void main(String[] args) {  
  3.         int a = 6;  
  4.         int b = 0;  
  5.         try { // try监控区域  
  6.               
  7.             if (b == 0throw new ArithmeticException(); // 通过throw语句抛出异常  
  8.             System.out.println("a/b的值是:" + a / b);  
  9.         }  
  10.         catch (ArithmeticException e) { // catch捕捉异常  
  11.             System.out.println("程序出现异常,变量b不能为0。");  
  12.         }  
  13.         System.out.println("程序正常结束。");  
  14.     }  
  15. }  

例2  捕捉运行时系统自动抛出“除数为0”引发的ArithmeticException异常
  1.    public static void main(String[] args) {  
  2.         int a = 6;  
  3.         int b = 0;  
  4.         try {  
  5.             System.out.println("a/b的值是:" + a / b);  
  6.         } catch (ArithmeticException e) {  
  7.             System.out.println("程序出现异常,变量b不能为0。");  
  8.         }  
  9.         System.out.println("程序正常结束。");  
  10.     }  
  11. }  


      



java程序异常处理

异常处理        目前,衡量一门语言是否成熟,异常处理是重要的方面。        增加异常处理之后,程序会具有更好的容错性,会更加健壮。 比如一个简单的程序:        让用户输...
  • hxp1991
  • hxp1991
  • 2016年08月16日 21:20
  • 403

走进C++程序世界------异常处理

一、 概述 C++自身有着非常强的纠错能力,发展到如今,已经建立了比较完善的异常处理机制。C++的异常情况无非两种,一种是语法错误,即程序中出现了错误的语句,函数,结构和类,致使编译程序无法进行...
  • jsh13417
  • jsh13417
  • 2014年05月15日 23:30
  • 1775

保护模式及其编程——中断和异常处理

摘要:为了提高CPU的利用效率,我们采用了中断策略来处理某些外部事件。同时,软件也需要触发某些中断和异常,例如除零中断/page Fault异常等。和子程序调用相比,中断和异常的发生往往是不可预料的,...
  • trochiluses
  • trochiluses
  • 2014年02月26日 15:41
  • 2228

JAVA异常机制介绍/如何正确的进行JAVA异常处理

作者:Maverick  blog:http://blog.csdn.net/zhaohuabing  转载请注明出处 1. 课前练习 在阅读本文的内容之前,请从下面这段代码中找出异常处理有...
  • best1196
  • best1196
  • 2015年03月19日 11:42
  • 1939

Java异常处理终结篇——如何进行Java异常处理设计

使用Java异常的人很多,但能合理使用的却不多,Java异常处理设计是一个冷门的话题,但好的异常设计会让程序有质的变化,所以本文从各个方面分析便总结了,在Java程序中,如何进行异常设计。...
  • yanquan345
  • yanquan345
  • 2014年02月28日 15:08
  • 9606

异常处理原则

《Rules for Developing Robust Programs with Java Exception》第6部分,作者总结的实用规则的译文。...
  • u010278882
  • u010278882
  • 2015年09月25日 16:55
  • 1182

Java源码-第一个异常处理小程序:整数除法

Java how to program(中文名:Java大学教程)第10版第11章:深入理解异常(Exception Handling: A Deeper Look)中给出了一个整数除法的示例,用户输...
  • hpdlzu80100
  • hpdlzu80100
  • 2016年07月20日 22:13
  • 1328

中断和异常的处理

本文为 第17章笔记 中断和异常 中断和异常概述 中断和异常的作用是指示系统中的某个地方发生一些事件, 需要引起处理器(包括正在执行中的程序和任务)的注意. 当中断和异常发生时, 典型的结果是迫使...
  • ProgrammingRing
  • ProgrammingRing
  • 2014年03月15日 18:14
  • 8681

【VS开发】C++异常处理操作

异常处理的基本思想是简化程序的错误代码,为程序键壮性提供一个标准检测机制。 也许我们已经使用过异常,但是你会是一种习惯吗,不要老是想着当我打开一个文件的时候才用异常判断一下,我知道对你来说你喜欢...
  • LG1259156776
  • LG1259156776
  • 2016年05月21日 21:34
  • 1681

ARM中断异常处理的返回的问题

因为ARM指令是三级流水线就是说取指,译指,执行时同时执行的 ,这样说吧,现在PC指向的是正在取指的地址,那么cpu正在译指的指令地址是PC-4(假设在ARM状态下,一个指令占4个字节),cpu正在执...
  • zzsfqiuyigui
  • zzsfqiuyigui
  • 2014年04月10日 10:01
  • 3164
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java异常
举报原因:
原因补充:

(最多只允许输入30个字)