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

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 stub
      
      		int 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.lang
    Class Throwable
    
        java.lang.Object
            java.lang.Throwable
    
        All Implemented Interfaces:
            Serializable
    
        Direct Known Subclasses:
            Error, Exception 
    

    java.lang
    Class 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 stub
      		int c = 0;
      		
      		try{
      		int a = 3;
      		int b = 2;
      		
      		 c= a / b;
      		 System.out.println("---hello---");
      		}
      		catch(ArithmeticException e){
      			//将19行产生的异常对象赋值给了e
      			e.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 stub
      		int 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值