关于throw?

来源:1-7 Java 中的异常链

wshyzx

2016-07-18 17:10

本节中

throw new DrunkException();抛出异常类,抛出的是类

throw newExc;抛出对象。

能抛出对象?

抛出对象时格式不一样,不用写new ?

throw 能抛出哪些?

写回答 关注

5回答

  • 蒲杰
    2016-08-07 17:52:37

    抛出异常的方法有2种:

    1)在方法体内部使用throw语句抛出异常对象,格式是:throw +有异常类所产生的对象

    2)就是老师讲的:[修饰符] 返回值类型  方法名(参数列表)throws  +异常列表。

    这个例子中newExc是由RuntimeException创建的对象,所以用throw newExc;

  • 霜之咏叹颂
    2016-07-23 23:16:25

    public class test_1 {

        public static void main(String[] args) {
            test_1 result = new test_1();
            result.deal2();
        }
        public class DIYException1 extends Exception {
            public DIYException1() {
            }
        }
        public class DIYException2 extends Exception {
            public DIYException2() {
            }
        }
        //自定义两种异常
        public void test() throws DIYException1 {
            throw new DIYException1();
        }
        //通过test(),抛出异常1
        public void deal1() throws DIYException2 {
            try {
                test();
            } catch (DIYException1 e) {
                System.out.println("error1");
                throw new DIYException2();
            }    
        }
        //检测到异常1抛出后,抛出异常2,并输出error1
        public void deal2() {
            try {
                deal1();
            } catch (DIYException2 e) {
                System.out.println("error2");
            }
        }
        //检测到异常2后,输出error2
    }

  • dendai
    2016-07-18 18:59:07

    throw关键字通常用在方法体中,并且抛出一个异常对象。程序在执行到throw语句时立即停止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法声明中指明要跑出的异常;如果要捕捉throw抛出的异常,则必须使用try—catch语句。举例如下:
    package imooc;

    class MyException extends Exception { // 创建自定义异常类
        String message; // 定义String类型变量

        public MyException(String ErrorMessagr) { // 父类方法
            message = ErrorMessagr;
        }

        public String getMessage() { // 覆盖getMessage()方法
            return message;
        }
    }

    public class ThrowTest { // 创建类
        static int quotient(int x, int y) throws MyException {// 定义方法抛出异常
            if (y < 0) { // 判断参数是否小于0
                throw new MyException("除数不能是负数");// 异常信息
            }
            return x / y;// 返回值
        }

        public static void main(String args[]) { // 主方法
            try { // try语句包含可能发生异常的语句
                int result = quotient(3, -1);// 调用方法quotient()
            } catch (MyException e) { // 处理自定义异常
                System.out.println(e.getMessage()); // 输出异常信

            } catch (ArithmeticException e) {
                // 处理ArithmeticException异常
                System.out.println("除数不能为0");// 输出提示信息
            } catch (Exception e) { // 处理其他异常
                System.out.println("程序发生了其他的异常");
                // 输出提示信息
            }
        }
    }

  • 阳城少年
    2016-07-18 17:34:42

    抛出的都是异常类对象,

  • 慕粉3657542
    2016-07-18 17:26:44

    new DrunkException();这句,有new,这句话就是实例化过程,所以抛出的是对象

    总之,throw抛出的是异常对象。不可能抛出一个类,类是抽象概念嘛~

    慕粉3657... 回复wshyzx

    这就不知道了,只知道能抛出异常类的实例对象

    2016-07-18 17:31:48

    共 2 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题