Java中throw和throws区别

throw:一般出现在方法体内,并且在使用的时候是以抛出异常对象为结束,后面的代码不会再执行,比如:

public int pop() {
        if(stack1.isEmpty() && stack2.isEmpty()){
            throw new RuntimeException("栈为空");
        }
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }

throws:一般出现在方法名字后,表示方法内的异常不做处理,抛给那些调用该方法的程序。比如:

public static void function() throws NumberFormatException {
        String s = "abc";
        System.out.println(Double.parseDouble(s));
    }

最后
1、throws出现在方法函数头;而throw出现在函数体。
2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

你可能感兴趣的:(Java中throw和throws区别)