zoukankan      html  css  js  c++  java
  • java异常处理中throws和throw的使用

    异常介绍:

    运行时异常非运行时异常

    在编写可能会抛出异常的方法时,它们都必须声明为有异常。

    一、throws关键字

    1.声明方法可能抛出的异常;

    2.写在方法名后面;

    3.可声明抛出多个异常,异常名使用逗号隔开;

    4.调用者可以处理异常,也可以继续抛出,交由它的调用者处理。

    有风险、会抛出异常的程序:

    static void pop() throws NegativeArraySizeException { // 使用throws关键字,将异常向上传递,由调用者负责处理
        int[] arr = new int[-3]; // 创建数组
    }

    调用该方法的程序:

    public static void main(String[] args) { // 调用方法
        try {
            pop(); // 调用pop()方法
        } catch (NegativeArraySizeException e) {
                System.out.println("pop()方法抛出的异常"); // 输出异常信息
            e.printStackTrace();
        }
    }

    二、throw关键字(用户自定义异常,需要通过throw关键字手动抛出)

    1.生成并抛出异常;

    2.在方法体内部;

    3.只能抛出一个异常对象。

    定义自己的异常类:

    public class MyException extends Exception {    //创建自定义异常,继承Exception类
        private static final long serialVersionUID = 1L;
    
        public MyException(String ErrorMessage) {     // 构造方法
            super(ErrorMessage);                 // 父类构造方法
        }
    }

    异常发生时:

    public class ThrowTest {
        public static void main(String[] args) { // 主方法
            int age = 0;
            try {
                if (age < 18) // 判断年龄是否小于18岁
                    throw new MyException("未成年人不能进入"); // 手动抛出异常,这两行就相当于除数等于0,只是除数等于0时系统会自动抛出异常,此时需要先判断再决定是否手动抛出异常
            } catch (MyException e) {
                e.printStackTrace();
            }
        }
    }

    注:如果在try语句块中有多句语句,在中间某句抛出异常后,try语句块中剩余的语句都不会执行,转而运行catch语句块。

    finally语句块无论是否抛出异常都会执行,即使有在try和catch语句块中return语句也会先执行finally语句块。

    三、异常处理规则:

    1.catch和finally不能没有try;

    2.try和catch之间不能有程序;

    3.try一定要有catch或finally;

    4.只带有finally的try必须要声明异常。

  • 相关阅读:
    CF767C Garland
    P2458 [SDOI2006]保安站岗
    P2704 [NOI2001]炮兵阵地
    P2607 [ZJOI2008]骑士
    POJ 1201 Interval (查分约束系统)
    位运算的魅力---N皇后问题
    设计模式之代理模式20170724
    C之Volatile关键字的介绍与使用20170724
    设计模式之桥梁模式20170721
    设计模式之策略模式20170720
  • 原文地址:https://www.cnblogs.com/YeHuan/p/10690980.html
Copyright © 2011-2022 走看看