有类似这么个代码:
[code="java"]
FTPClient fc = new FTPClient();
try {
fc.connect("127.0.0.1");
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//略去其他
[/code]
在我程序中有类似大量这种try、catch出现,而且每次都要判断一下,如果没有异常就返回true,如果有异常就返回false,同时大多是这种fc.connect("127.0.0.1"),返回的是void类型的,本来想写个方法如:public static boolean xxx(void obj){里面是try、catch和判断},
然后调用如:Test.xxx(fc.connect("127.0.0.1")),然后如果连接成功则返回true,失败则返回false,最后我再根据结果做相应业务处理。
但是参数类型是不能为void的,那么该如何是好啊?如果每次都是try、catch及大量boolean判断,整个代码将相当冗余及逻辑混乱。
这段代码如何重构
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
9条回答 默认 最新
- 「已注销」 2013-06-14 09:22关注
其实楼上都说的是异常处理办法,给你一段代码:
[code="java"]
public class DownLoadUtil {public static FTPClient open(String url, int port, int connectionTimes, int timeOut, String username, String password) throws IOException { FTPClient ftp = new FTPClient(); ftp.setConnectTimeout(timeOut); for (int i = 1;; i++) { try { ftp.connect(url, port); ftp.login(username, password); return ftp; } catch (IOException e) { if (i >= connectionTimes) throw e; } } } public static void close(FTPClient ftp) { if (ftp != null) { try { ftp.disconnect(); } catch (IOException e) { } } } public static void downFile(String url, int port, int connectionTimes, int timeOut, String username, String password, String remotePath, String fileName, String localPath) throws IOException { FTPClient ftp = null; try { ftp = open(url, port, connectionTimes, timeOut, username, password); ftp.changeWorkingDirectory(remotePath); FTPFile[] fs = ftp.listFiles(); for (FTPFile ff : fs) { String path = remotePath + HandleFileNameUtil.handleFileName(fileName); // 判断是否是主服务器文件路径 if (ff.getName().equals(path)) { // 经过处理后的文件名 File localFile = new File(localPath + "/" + HandleFileNameUtil.handleFileName(fileName)); try (OutputStream is = new FileOutputStream(localFile)) { ftp.retrieveFile(ff.getName(), is); } } } } finally { close(ftp); } }
}
[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败
- ¥15 树莓派5怎么用camera module 3啊
- ¥20 java在应用程序里获取不到扬声器设备
- ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
- ¥15 Attention is all you need 的代码运行