Java基础知识之异常

### 1.异常的概述
      对Java来说,异常就是一个类,产生了一个异常,就是产生了一个类的对象,
      这个类代表不正常的现象。
      整个异常体系 :重要
      Throwable(生病)
         Error (不可治愈的疾病)      错误:宕机,断点,海啸
         Exception (能治愈的疾病)      : 异常,程序员能处理
             非RuntimeExcetion   非运行时期异常,编译器异常,要求我们在编译器
            就必须进行处理 RuntimeException(运行时期异常 )
              
      
### 2.异常的注意事项:

     异常的注意事项: 
          1.如果对发生的异常一直不处理,程序不再继续执行
          2.如果对发生的异常进行try,catch,此時發生了異常,try下的代碼不會執行,
            此異常會被catch捕獲,同时程序继续执行

    
### 3.异常处理的第一种方式:
   
     第一种方式:捕获异常(分为单异常捕获,和多异常捕获)
     使用规则:异常捕获
     try{
     // 可能产生异常的代码
     }catch(Exception e){
     // 如果产生异常,进行处理
     }
     Java处理异常的机制:如果不处理异异常,则代码停止执行,并且将异常直接抛给JVM。
     
     使用规则:多异常捕获
     try{
     // 可能发生异常的代码
     }catch(异常类型  | 异常类型 e2){
      //如果产生异常,进行的处理
      // e.printStackTrace() 打印 针对于程序员的public class Demo01 {

	public static void main(String[] args) {
            Test t  = new Test();
            int method = t.method();
            System.out.println(method);
	}
}
class Test{
	public int method(){
		int i = 0;
        try{
           	System.out.println(1/0);
        	return i;
        }catch(Exception e){
        	  e.printStackTrace();
        }finally{
        	i = 200;
        	System.out.println("我一定会运行");
        }
		return i;
	}
	//返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值,
          无论方法内有任何的改变,返回路径中的这个值一致不变。
}
       //异常名字,异常描述,异常发生在哪儿 
     }
     问题为什么要分开捕获
     注意:该异常处理,只能是针对同级异常

### 4.异常处理的第二种方式 

     使用规则:抛出异常,在方法后边加上throws
     两个问题:
          如果不处理异常,那么异常最终会到哪儿
          如果拋出了异常,谁处理。



### 5.自定义异常

     使用规则: extends RuntimeException
               4个构造方法

     1.创建自定义异常 -->extends 
                      RuntimeException
                    非RuntimeException
                    需要实现父类的构造方法(传入自己的异常信息)
     throw  进行抛出,并且进型处理
                 

        
### 6.子父类异常注意事项:
       运行异常的特点:
         父类的方法,如果抛出异常,子类重写后可以不抛出异常也可以抛出异常,
         但是,如果子类要抛,抛出的异常不能大于父类的异常大于,都指的是继承关系
          
         父类的方法,没有异常抛出,子类重写后也不能抛出异常,
         如果子类中调用了抛出异常的方法,别无选择,只能try..catch处理意义
      

### 面试题
    1、 throw 和throws 的区别是什么
          throw 
            定义在方法中,后边跟的是异常对象
            同时只能抛出一个异常对象
            
          throws 
             定义在方法的声明上,后边跟的是异常的类型
             后边同时可以跟多个数据类型


    2、 finally 返回路劲面试题
         2. finally :在正常情况下,肯定执行的代码
         在try中return,在finally中修改:
         //返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值,
          无论方法内有任何的改变,返回路径中的这个值一致不变。
         代码:
         public class Demo01 {

	public static void main(String[] args) {
            Test t  = new Test();
            int method = t.method();
            System.out.println(method);
	}
	}
	class Test{
	 	public int method(){
		int i = 0;
        try{
           	System.out.println(1/0);
        	return i;
        }catch(Exception e){
        	  e.printStackTrace();
        }finally{
        	i = 200;
        	System.out.println("我一定会运行");
        }
		return i;
	}
	//返回路径:每次碰到return就会在返回路径中临时存储这个被返回的值,
           无论方法内有任何的改变,返回路径中的这个值一致不变。
}
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容