[ https://issues.apache.org/jira/browse/THRIFT-4852?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
James E. King III updated THRIFT-4852: -------------------------------------- Priority: Major (was: Critical) > The recv function of void functions doesn't throw custom exceptions > ------------------------------------------------------------------- > > Key: THRIFT-4852 > URL: https://issues.apache.org/jira/browse/THRIFT-4852 > Project: Thrift > Issue Type: Bug > Components: Lua - Compiler > Affects Versions: 0.12.0 > Reporter: Yu Gan > Priority: Major > > In thrift/compiler/cpp/src/thrift/generate/t_lua_generator.cc:621, it only > throws custom exceptions when the function is not void. However, void > function could still return exceptions to the caller service, as long as the > function is not oneway. > {code} > // Return the result if it's not a void function > if (!(*f_iter)->get_returntype()->is_void()) { > out << indent() << "if result.success ~= nil then" << endl << > indent() << " return result.success" > << endl; > // Throw custom exceptions > const std::vector<t_field*>& xf = > (*f_iter)->get_xceptions()->get_members(); > vector<t_field*>::const_iterator x_iter; > for (x_iter = xf.begin(); x_iter != xf.end(); ++x_iter) { > out << indent() << "elseif result." << (*x_iter)->get_name() << " > then" << endl > << indent() << " error(result." << (*x_iter)->get_name() << > ")" << endl; > } > out << indent() << "end" << endl << indent() > << "error(TApplicationException:new{errorCode = " > << "TApplicationException.MISSING_RESULT})" << endl; > } > {code} -- This message was sent by Atlassian JIRA (v7.6.14#76016)