Think in Java 笔记_Chapter12_1_Exception基础_继承和RuntimeException处理1

来源:互联网 发布:网络音乐产业发展现状 编辑:程序博客网 时间:2024/06/08 17:58
java中异常
  1. 异常Exception 是我们可以处理的,可以进行补救,遇到异常就不会执行了​

    1. package cn.seven.shengsiyuan.exception;/* * Time:2015年04月05日12:24:58,清明节 * Location:501 *  */public class ExceptionDemo1 {public static void main(String[] args) {// TODO Auto-generated method stubint a = 3;int b = 0;int c = a / b;//这句话执行会发生异常,下面的语句便不执行System.out.println("------");System.out.println(c);}}

      /*
      Exception in thread "main" java.lang.ArithmeticException: / by zero
          at cn.seven.shengsiyuan.exception.ExceptionDemo1.main(ExceptionDemo1.java:17)

      */
  2. 异常的继承体系-java中的异常都继承自Exception类

    异常分为两大类:
    Checked Exception(非运行时异常 )
           UnChecked Exception(运行时异常 Runtime Exception)

    java.langClass Throwable    java.lang.Object        java.lang.Throwable    All Implemented Interfaces:        Serializable    Direct Known Subclasses:        Error, Exception 

    java.langClass Exception    java.lang.Object        java.lang.Throwable            java.lang.Exception
    1. 运行时异常 RuntimeException
          java.lang.Object        java.lang.Throwable-            java.lang.Exception                java.lang.RuntimeException                    javax.management.JMRuntimeException

       

    2. 非运行时异常: 继承了Exception类,但是不继承RuntimeException类的异常
  1. RuntimeException 异常的处理-固定的流程和模式

    1. try{}catch(Exception e){}

       

    2. package cn.seven.shengsiyuan.exception;/* * Time:2015年04月05日12:24:58,清明节 * Location:501 *  */public class ExceptionDemo1 {public static void main(String[] args) {// TODO Auto-generated method stubint c = 0;try{int a = 3;int b = 2; c= a / b; System.out.println("---hello---");}catch(ArithmeticException e){//将19行产生的异常对象赋值给了ee.printStackTrace();//printStackTrace打印异常的信息,来自Throwable类的方法}finally{System.out.println("finally");}System.out.println("------");System.out.println(c);}}/* * 19行出现异常,产生针对于该异常类的对象 ArithmeticException * 当异常发生的时候,进入catch块,由catch进行接管,然后执行catch块中的内容 * 执行完毕,接下来执行syso语句 *  *  * 现在的重点便是21行-的catch语句的过程 */

       

    3. 完整的异常处理结构
      try{//可能发生异常的语句的代码块}catch(异常对象){//对发生异常之后的处理}finally{//无论是否发生异常,最终都会被执行的语句,防止某些语句因为发生了异常而无法得到执行}

       

      package cn.seven.shengsiyuan.exception;/* * Time:2015年04月05日12:24:58,清明节 * Location:501 *  */public class ExceptionDemo1 {public static void main(String[] args) {// TODO Auto-generated method stubint c = 0;try{int a = 3;int b = 0; c= a / b; System.out.println("---hello---");}catch(ArithmeticException e){e.printStackTrace();//printStackTrace打印异常的信息,来自Throwable类的方法}finally{System.out.println("finally");//一定会被执行,无论是否发生异常}//System.out.println(c);?疑问的是为什么这边会仍然输出的是 c=0?是因为c=a/b;语句出现异常,c没有执行赋值语句}}

       

  2. 程序中出现多个异常的话,只会有特定的catch处理特定的异常

 

0 0
原创粉丝点击