您的位置:首页 > 其它

异常机制中throw和throws的区别

2010-11-12 11:02 253 查看
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块。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: