java之异常处理

异常:程序出现了不正常的情况
     举例:
         今天天气很好,班长出去旅游。骑着偷来的摩拜。去火炉山接近大自然,吸收新鲜空气。
         问题1:火炉山塌陷了,班长及时踩住了刹车,但是去不了火炉山了。严重问题
         问题2:班长骑着偷来的摩拜,发现摩拜没气,把气给吹了起来。出发前就检查好的问题
         问题3::班长骑着摩拜在山路上惬意的行驶着,山路两边有小石子。中间是平坦的道路。
               本来一直在平坦的道路行驶是没有任何问题的,但是班长喜欢炫技,偏偏喜欢在小石子上面飙车,结果爆胎了。
            作死问题。

    程序的异常:Throwable
        严重异常:Error 我们不进行任何处理,这种问题一般是非常严重的,比如说内存进行非常严重溢出
        问题异常:Exception(RuntimeException)
            编译期异常:不是RuntimeException的异常,我们就必须处理,因为你不处理程序就不然你通过编译
            运行时异常:RuntimeException 这种问题我们可以不处理,因为这个问题是你的问题,而且这个问题的出现肯定是我们代码的不严谨造成的。需要我们修正代码
        
        如果程序出现了问题,我们没有做任何的处理,最后JVM会帮我们做默认的处理
        把异常的名称进行输出,原因以及出现的问题等相关信息输出到控制台
        同时还会结束程序的运行
        

        
     我们自己如何处理异常呢?
     a.try....catch...finally 自己处理
     b.throws  抛出

     try....catch...finally 异常的处理格式:
         try{
             存放可能或出现异常的代码;

         }catch(){

             异常出现之后该怎么处理的代码;
         }finally{
             不管异常是否出现,都必须要处理的代码;

         }

     变形的格式:
         try{
             存放可能或出现异常的代码;
         }catch(异常名 变量){
             异常出现之后该怎么处理的代码;
         }

        
        e.getMessage():返回异常的消息字符串
        e.toString():返回异常的简短描述
         java.text.ParseException : Unparseable date: "2018-02-05"
        此对象的类的name的全名路径 : 调用了getMessage的异常信息
        
        有些时候,我们是可以不对问题代码进行异常处理,但是又些时候我们是没有这个权限去处理某个异常
     或者说,这个异常我没有能力解决,那我就不处理了
     为了解决出错的问题,java就针对这种情况,提供了另一种方案:异常抛出
         
         格式:
            throws 异常类名
            注意:这个格式必须跟在方法的括号后面
            
         注意:
            我们尽量不要在main方法进行异常抛出。
            但是为了讲课,我会经常这样做。
            
         小节:
            编译期出现异常,调用者必须处理
            运行时异常,将来的调用者可以不处理
            
    finally:被finally控制的语句一定会被执行
     注意:如果说执行到finally之前,jvm就退出了,那么他就不会执行
    
    面试题:
        1.final,finally,finalize的区别?
         final:最终的意思,可以修饰类、成员变量、成员方法
         finally:异常处理的一部分,用于释放资源
         finalize:Object的一个方法,用于垃圾回收

     2.如果catch里面有return语句,请问,finally里面的代码还会被执行么?
         如果会,请问是return前,还是return后??
         会,前
       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值