Java抛出异常时用e.printStackTrace()怎么会说没有返回值呢?

public Socket getSocket()
{
try {
Socket socket =new Socket("localhost",8088);
return socket;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这里要报错,没有返回值
public Socket getSocket() throws Exception
{
try {
Socket socket =new Socket("localhost",8088);
return socket;
} catch (Exception e) {
// TODO Auto-generated catch block
throw e;
}
}
这里正确。
不是说都是碰到异常就跳到catch里执行吗,怎么两个结果不相同呢?

return和throw 都是程序中断返回。e.printStackTrace();只是打印信息而已。