[英]try and catch blocks in return methods
我对使用try和catch语句相当陌生,并且在return语句方面遇到了一些麻烦。 编译我的代码后,我在以下地方得到了一个unreported IOException
:
fileFtp = client.listNames();
因此,我尝试尝试将此语句包装起来,然后为异常编写了一个catch,但是fileName数组不再可见,因此我将整个方法包装在try{}
并在最后使用了catch并放入return语句在catch{}
结束后返回了fileName,但由于在try{}
不再可见fileName,因此这也不起作用,因此如何在仍然具有fileName和fileFtp数组的情况下满足异常报告的要求初始化了吗?
private String[] checkDirectories(){
String[] fileFtp;
String[] fileName;
try{
fileFtp = client.listNames();
}
catch(IOException ex){
System.out.println("IOException in checkDirectories()");
ex.printStackTrace();
}
fileName = new String[fileFtp.length];
for (int i=0; i<fileFtp.length; i++){
fileName[i] = fileFtp[i];
}
return fileName;
}
您不应该在这里捕获异常,否则您不会给调用代码任何表明操作失败的指示。 让异常抛出,以便调用者可以意识到出了点问题并加以处理:
private String[] checkDirectories() throws IOException {
String[] fileFtp = client.listNames();
String[] fileName = new String[fileFtp.length];
for (int i=0; i<fileFtp.length; i++) {
fileName[i] = fileFtp[i];
}
return fileName;
}
引发异常会使代码脱离当前的执行路径,从而使其无法对无效数据进行操作,并向调用代码发出信号,指出发生了问题。 如果捕获到异常并在此处返回null,则调用代码必须检查null并决定是否继续。
我不确定您要问什么,但您应该尝试以下操作:
private String[] checkDirectories()
{
String[] fileFtp = null;
String[] fileName = null;
try
{
fileFtp = client.listNames();
fileName = new String[fileFtp.length];
for (int i=0; i<fileFtp.length; i++)
{
fileName[i] = fileFtp[i];
}
}
catch(IOException ex)
{
System.out.println("IOException in checkDirectories()");
ex.printStackTrace();
}
return fileName;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.