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
    */
    成年人的世界没有那么多的童话,也没有那么多的逆袭。
  • 相关阅读:
    .NET Core/.NET5/.NET6 开源项目汇总7:电商项目
    .NET Core/.NET5/.NET6 开源项目汇总6:框架与架构设计(DDD、云原生/微服务/容器/DevOps/CICD等)项目
    .NET Core/.NET5/.NET6 开源项目汇总5:(权限)管理系统项目
    .NET Core/.NET5/.NET6 开源项目汇总4:CMS、Blog项目
    .NET Core/.NET5/.NET6 开源项目汇总3:工作流组件
    .NET Core/.NET5/.NET6 开源项目汇总2:任务调度组件
    .NET Core/.NET5/.NET6 开源项目汇总1:常用必备组件
    .NET平台系列31:.NET团队送给.NET开发人员的云原生学习资源汇总
    .NET平台系列30:.NET Core/.NET 学习资源汇总
    .NET平台系列29:.NET Core 跨平台奥秘
  • 原文地址:https://www.cnblogs.com/shijinglu2018/p/8353402.html
Copyright © 2011-2022 走看看