为了账号安全,请及时绑定邮箱和手机立即绑定

关于throw?

本节中

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

throw newExc;抛出对象。

能抛出对象?

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

throw 能抛出哪些?

正在回答

5 回答

抛出异常的方法有2种:

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

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

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

0 回复 有任何疑惑可以回复我~

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
}

0 回复 有任何疑惑可以回复我~

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("程序发生了其他的异常");
            // 输出提示信息
        }
    }
}

2 回复 有任何疑惑可以回复我~

抛出的都是异常类对象,

0 回复 有任何疑惑可以回复我~

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

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

0 回复 有任何疑惑可以回复我~
#1

wshyzx 提问者

能抛出方法?能抛出变量?能抛出字符串?
2016-07-18 回复 有任何疑惑可以回复我~
#2

慕粉3657542 回复 wshyzx 提问者

这就不知道了,只知道能抛出异常类的实例对象
2016-07-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

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

进入课程

关于throw?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信