java进阶 - 异常

异常的分类:运行时异常 编译时异常(编译时直接报错)
            错误(error)和异常(exception)有什么区别?
                    error代表,一般出现的错误是致命的,而且是不可挽回的,比如服务器宕机,数据库崩溃
                    exception:运行和编译错误,是可以挽回的,一般是程序员自己犯的错误,需要修改源代码,知道可以正常运行
                    
异常处理格式
    ① 自己不去处理,直接抛出异常 ,谁执行到这个方法,谁去解决
       throws : 抛异常,抛到方法上,直接暴露出来,给调用者去解决
    ② try { //执行的代码,其中可能有异常。一旦发现异常,则立即跳到catch执行。否则不会执行catch里面的内容 }

      catch (){ //除非try里面执行代码发生了异常,否则这里的代码不会执行 }

      finally { //不管什么情况都会执行,包括try catch 里面用了return ,可以理解为只要执行了try或者catch,就一定会执行 finally }
      
异常处理时的注意情况:
        一:
           多个异常用catch
           注意:catch处理的异常,最大的异常放在最后面,最小的异常放在最里面
           当知道具体到哪一行时,最好用最小的异常去处理

        
        
        //方法一:
        try {
            method2();
            method1();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        二:
           final finally 与 finalize的区别
            1.在java中,final可以用来修饰类,方法和变量(成员变量,局部变量)
              1.final修饰的类不能被继承 2.final修饰的方法不能被子类重写3.final修饰的变量不能被重新赋值
            2.finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块
                           表示这段语句一定会被执行(不管有没有抛出异常),通常用来释放资源
            3.finalize是object类的一个方法,在垃圾收集器gc执行的时候会调用被回收对象的方法,
                  可以覆盖此方法提供垃圾收集时的其他资源回收(比如关闭文件)
              JVM不会保证此方法被调用
        
        三:
            面试题: throw和throws的区别
              1.throw是语句抛出的异常
                        语法:throw(异常对象);
                throws是方法可能抛出的异常声明。(用在声明的方法后,表示该方法可能会出现的异常)
                        语法: public void A(int a) throws Exception1,Exception2{}
              
              2.throw语句用在方法体内,表示抛出异常,由方法体内的语句去执行
                throws语句用在方法声明后面,表示在抛出异常,由该方法调用者去处理
               
              3.throws主要是声明这个方法可能会抛出这种类型的异常,使他的调用者知道要去捕获这个异常【有可能,倾向】
                 throw是具体向外抛出异常的动作,所以他是抛出异常的一个实例【把倾向变成真实】
                
        四:父类和子类之间的异常处理关系
            子类继承父类。重写父类方法,当父类方法有异常时,那么子类重写父类方法后,抛出的异常要么相同,要么比它还小
                         【父类坏了。子类不能比父类更坏】
          1.异常的大小:FileNotFoundException<IOException<Exception(最大)<Throwable(基本用不到)
                Serializable:序列化 底层
          2.当父类有多个异常时,子类只能抛出一样的异常或者父类的子异常,不能抛出父类没有的异常
          
          3.当父类没有异常,子类去重写的方法中没有异常,子类不能抛出异常【throws】,子类只能捕获异常【try{}catch(){}】
          
         五:JAVA中也可以自定义异常
             自定义一个异常去继承异常类 ,继承父类的构造函数
             给定判断条件,当条件满足事务,就可以去执行这个异常的处理方式
             
        
        
   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值