【发布时间】:2015-11-20 17:57:00
【问题描述】:
我想知道,当有返回状态的函数时,有没有更好的方法来编写代码。
下面是一个例子。 (如果有任何简单的代码错误请忽略。我特意说的是结构。另外,我在工作,这台电脑上没有编译器)
#include "Session.h"
Session::Session(const char * IPaddress, unsigned int openPort)
{
ssh_session mySession;
hostIP = IPaddress;
port = openPort;
}
int Session::cBeginSession()
{
try
{
int status = ssh_options_set(mySession, SSH_OPTIONS_HOST, &hostIP);
if (status == 0)
{
status = ssh_options_set(mySession, SSH_OPTIONS_LOG_VERBOSITY,
SSH_LOG_PROTOCOL);
if(status == 0)
{
status = ssh_options_set(mySession, SSH_OPTIONS_PORT, &port);
if (status == 0)
{
std::cout << "Session started\n";
return 0;
}
else
{
std::cout << "Unable to set port\n";
return -3;
}
}
else
{
std::cout << "Protocol option log verbosity unable to set\n";
return -2;
}
}
else
{
std::cout << "Unable to set Host address\n";
return -1;
}
}
catch (...)
{
std::cout << "Unknown exception occurred\n";
return -8;
}
}
我通常使用带有状态参数的 if-else 语句,但如果涉及的函数不止一两个,我往往会使用大量的 if-else 语句。有没有更易读的方式来写这样的东西?很快就变成老鼠窝了。
编辑:感谢您的所有回复。我想我对如何更好地构建我的代码有一些想法。我感谢所有勤奋的建议。
【问题讨论】:
-
我认为一般来说例外是最好的。但请确保您的代码是exception safe。
-
它比“我认为”更强大。当操作预期成功时,异常是推荐的标准方式来传达失败。