我写了这段代码。这真的很难看。我想重构一下。我必须返回object[]
。我在考虑使用bool
值来检查我是否必须继续调用其他方法,并且最后创建object[]
。
private object[] TrasferisciSingoloFile(some parameters...)
{
Result result = new Result;
result = FTPRename(some parameters...);
if (result.error)
{
result.SetError("Some Problem 1");
object tip = new object[] { par as ThreadCounterManager, result };
return (object[])tip;
}
result = FTPDownloadAndCopy(some parameters...);
if (result.error)
{
result.SetError("Some Problem 2");
object tip = new object[] { par as ThreadCounterManager, result };
return (object[])tip;
}
result = FTPMove(some parameters...);
if (result.error)
{
result.SetError("Some Problem 3");
object tip = new object[] { par as ThreadCounterManager, result };
return (object[])tip;
}
result = FTPDelete(some parameters...);
if (result.error)
{
result.SetError("Some Problem 4");
object tip = new object[] { par as ThreadCounterManager, result };
return (object[])tip;
}
object tip1 = new object[] { par as ThreadCounterManager, result };
return (object[])tip1;
}
答案 0 :(得分:6)
让FTPXXXX套件的所有功能在发现错误时抛出异常,因此您可以在catch(){}
块中捕获并返回错误一次。 “某些问题xxxx消息”可以使用您在提出异常时提供的消息进行修饰。
答案 1 :(得分:1)
假设您的FTP函数在代码中的其他位置,请考虑让它们抛出异常,并在此函数中使用try / catch子句。
Result result = new Result();
try
{
result = FTPRename(some parameters...);
result = FTPDownloadAndCopy(some parameters...);
result = FTPMove(some parameters...);
result = FTPDelete(some parameters...);
}
catch (SomeException e)
{
return (object[])new object[] { par as ThreadCounterManager, result.SetError(e.Message) };
}
return return (object[])new object[] { par as ThreadCounterManager, result };
答案 2 :(得分:1)
如果您可以修改FTP方法,您可以让它们自己分配错误消息,并创建一个帮助方法来创建提示对象。这样,除了检查是否发生错误之外,您不需要关心任何事情。
类似
private Object[] makeTip(arg1, arg2) {
return Object[] {arg1, arg2};
}
Result result = new Result;
result = FTPRename(some parameters...);
if(result.error)
return makeTip(par as ThreadCounterManager, result);
result = FTPDownloadAndCopy(some parameters...);
if(result.error)
return makeTip(par as ThreadCounterManager, result);
...
return makeTip(par as ThreadCounterManager, result);