异常机制中throw和throws的区别
public ChatEntry() throws ServerConnectionException {
try {
socket = new Socket("127.0.0.1", 8189);
in=new Scanner(System.in);
out = new PrintWriter(socket.getOutputStream(), true);
} catch (UnknownHostException ex) {
Logger.getLogger(ChatEntry.class.getName()).log(Level.SEVERE, null, ex);
throw new ServerConnectionException("服务器连接无效",ex);
} catch (IOException ex) {
Logger.getLogger(ChatEntry.class.getName()).log(Level.SEVERE, null, ex);
throw new ServerConnectionException("服务器连接异常",ex);
}
}
今天复习老师讲的上述代码,感觉对throw和throws的概念很模糊,声明方法时已经用throws抛出,方法体中为什么还要用throw抛出?即便如此,方法体中抛出的还是实例?
我带着种种疑问,查了一些资料,上网搜索了一下,具体归纳如下:
1. throws出现在方法函数头,可以单独使用;而throw出现在函数体,不可以单独使用,throw要么和try-catch-finally语句配套使用,要么与throws配套使用。
2.throws主要是声明这个方法会抛出这种类型的异常,使其他地方调用它时知道要捕获这个异常。 throw是具体向外抛异常的动作,所以它是抛出一个异常实例。
3. throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常;
4. 程序会在throw语句后立即终止,它后面的语句执行不到,然后在包含它的所有try块中(可能在上层调用函数中)从里向外寻找含有与其匹配的catch子句的try块。

浙公网安备 33010602011771号