老师,FTPUtil里面的connectServer方法,是否把异常抛出更合适呢
来源:8-6 后台商品图片的springmvc上传与富文本上传ftp服务器功能开发1
慕哥6062902
2020-06-08
这里如果连接报错,或者登陆失败,我感觉都该把异常抛出去,老师觉得呢。
private boolean connectServer(String ip,int port,String user,String pwd){
boolean isSuccess = false;
ftpClient = new FTPClient();
try {
ftpClient.connect(ip);
isSuccess = ftpClient.login(user,pwd);
} catch (IOException e) {
logger.error("连接FTP服务器异常",e);
}
return isSuccess;
}
同理我觉得这里,也不需要catch,而是直接抛出。只要上传过程中碰到异常,全部抛出,由上层去处理
private boolean uploadFile(String remotePath,List<File> fileList) throws IOException {
boolean uploaded = true;
FileInputStream fis = null;
//连接FTP服务器
if(connectServer(this.ip,this.port,this.user,this.pwd)){
try {
//remotePath如果不传,表示就在当前文件夹下面
ftpClient.changeWorkingDirectory(remotePath);
ftpClient.setBufferSize(1024);
ftpClient.setControlEncoding("UTF-8");
//指定这个,可以防止一些乱码的事情
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
//之前在FTP服务器上配置的是一个被动模式,并且对外也开放了一个服务的被动端口范围vsftpd的安装章节,
//这个时候打开本地的被动模式,
ftpClient.enterLocalPassiveMode();
for(File fileItem : fileList){
fis = new FileInputStream(fileItem);
ftpClient.storeFile(fileItem.getName(),fis);
}
} catch (IOException e) {
logger.error("上传文件异常",e);
uploaded = false;
e.printStackTrace();
} finally {
fis.close();
ftpClient.disconnect();
}
}
return uploaded;
}
写回答
2回答
-
同学,其实异常分很多种,有一些异常是用户输入导致的异常,这个时候一直向上抛出是没有问题的,假如说有一些异常是开发者编码导致的异常,这部分异常本就不应该发生,即使抛出给最终用户也是没有用的,这样的异常就应该及时通知开发者解决:https://www.jianshu.com/p/85fa65bb6d24
00 -
慕哥6062902
提问者
2020-06-09
谢谢老师,这篇文章质量很高,感谢分享,我会慢慢去体会的。我想问的是我们课程里面,因为service层已经做了try catch。如果在上传FTP服务器中出现任何异常,那么返回的文件名都是null。所以我才认为说这个工具类里面是不是可以不捕获了。IOE异常即使捕获,也没法修复,抛出去让service好像更好,只是个人感觉哈
012020-06-11
相似问题