zoukankan      html  css  js  c++  java
  • 异常复习之二

    java异常巩固

     

     1.try…catch…finally如何使用?

     答:try表示可能会抛出异常的语句块,catch是try出现异常后的接收者,finally中的语句无论如何代码都会执行,除非JVM关闭,通常,它会在语句块中放置一些释放资源的代码。

     

    2.printStackTrace的用法和含义?

    答:如果JVM追溯到调用栈最底部main方法时,仍没有找到异常代码块,则

    调用异常对象printStackTrace()方法,打印方法调用栈的异常信息,当程序

    出现异常,可以看栈踪迹。

     

    3.throws和throw的用法和区别?

     答:throws使用方法是在main方法后面继承的,一般是交给JVM使用,throw是手动抛出异常。

     

    4.如何自定义异常?

    答:继承Exception或runtimeException。

     

    5.finally和final的区别?

    答:finally中的语句块表示一定要执行的代码,而final定义的变量相当于是常量,不可修改,方法相当于是最终方法,不可重写。即一个必须执行且作为异常处理的一部分,另一个不可修改。

     

    小练习:

    1、输入至少五个整数。

    import java.util.*;
    class testP{
        public static void main(String[] args) {
            try{
                if(args.length<5)
                    throw new Exception();
    
                int intarray[]=new int[args.length];
    
                for (int i=0;i<args.length;i++)
                    intarray[i]=Integer.parseInt(args[i]);
                
                for (int i=0;i<intarray.length;i++)
                    System.out.println(intarray[i]+"");
                }
                catch (NumberFormatException e) {
                    System.out.println("请输入整数:");
                }
                catch (Exception e) {
                    System.out.println("请输入至少五个整数:");
                }
            
        }
    }

    finally块在什么时候执行?try{}里有一个return语句,那么紧跟在这个try后的finally{}中的代码是否会被执行?何时被执行,在return之前还是之后?

    答:会被执行,且在return(执行后会返回值且跳出函数体)之前。若return在finally中,则该return会覆盖其它的return,当然也是先执行finally语句。

    public class Test{
        public static int testFianlly{
            try{
                return 1;
            }catch (Exception e) {
                return 0;
            }finally{
                System.out.println("exection finally");
            }
        }
    
        public static void main(String[] args) {
            int result=testFianlly();
            System.out.println(result);
        }
    }
    /*
    运行结果:
    execute finally
    1
    */
    
    public class Test{
        public static int testFinally(){
            try{
                return 1;
            }catch(Exception e){
                return 0;
            }finally{
                System.out.println("exeception finally");
                return 3;
            }
        }
    
        public static void main(String[] args) {
            int result=testFinally();
            System.out.println(result);
        }
    }
    /*
    exeception finally
    3
    */
    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    IE input X 去掉文本框的叉叉和密码输入框的眼睛图标
    vue监听滚动事件 实现某元素吸顶或者固定位置显示
    判断滚动条到底部的JS逻辑
    vue plugin 插件编写以loading为例
    Maven使用yuicompressor-maven-plugin打包压缩css、js文件
    AngularJS 用 Interceptors 来统一处理 HTTP 请求和响应
    jQuery mouseover与mouseenter,mouseout与mouseleave的区别
    angular内ng存在属性是专门用来解决跨域问题的,$sce
    dede上怎么让所有链接在新窗口打开
    dede文章页调用当前栏目链接方法
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/8353402.html
Copyright © 2011-2022 走看看