zoukankan      html  css  js  c++  java
  • java异常

    try,catch,finally语句块的return的优先级由低到高,先执行try中return之前的语句,如果遇到异常,则执行catch语句中return之前的代码,最后执行finally语句块,finally语句块中如果有return,那么程序就会提前返回,如果没有,则返回catch语句块中的return,如果没有遇到异常,则直接执行finally中的语句块,再看finally语句块中是否有return来决定返回结果。
    
    结论:
    
    1、不管是否出现异常,finally块中的代码都会执行;
    
    2、当try和catch中有return时,finally仍然会执行,finally中的return优先级大于catch大于try;
    
    3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;
    
    4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。
    
    绝大多数情况下,finally中的代码都是会被执行的,只有一种情况下,finally中的代码不会被执行,那就是在try语句块中结束掉了虚拟机(如:使用 System.exit(0); )。
    
    public class Test {
        public static void main(String args[]){
            try{
                throw new NullPointerException("听说你很闲,给你抛个异常。");
            }catch (NullPointerException e) {
                System.out.println("这里捕获空指针异常,提示内容:" + e.getMessage());
                e.printStackTrace();
            }
        }
    }
    
    自定义异常
    public class MyException extends Exception {
        public MyException() {
            super();
        }
    
        public MyException(String message) {
            super(message);
        }
    
        public MyException(String message, Throwable cause) {
            super(message, cause);
        }
    
        public MyException(Throwable cause) {
            super(cause);
        }
    
        protected MyException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
            super(message, cause, enableSuppression, writableStackTrace);
        }
    }
    

      

  • 相关阅读:
    继百岁版之后的续命版的更新
    重启nginx
    酒吧流行游戏不完全手册
    google实时搜索
    ubuntu 支持gbk
    网页编码
    爬虫日志分析
    feedsky 话题 营销
    python时间日期格式转换
    nginx错误重定向
  • 原文地址:https://www.cnblogs.com/qinyios/p/11125167.html
Copyright © 2011-2022 走看看