Clean up some additional exception handling with new stack handler
This commit is contained in:
@@ -190,28 +190,19 @@ namespace chaiscript
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Boxed_Value fn = this->children[0]->eval(t_ss);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Boxed_Value fn = this->children[0]->eval(t_ss);
|
chaiscript::eval::detail::Stack_Push_Pop spp(t_ss);
|
||||||
|
const Boxed_Value &retval = (*boxed_cast<const Const_Proxy_Function &>(fn))(plb);
|
||||||
try {
|
return retval;
|
||||||
chaiscript::eval::detail::Stack_Push_Pop spp(t_ss);
|
|
||||||
const Boxed_Value &retval = (*boxed_cast<const Const_Proxy_Function &>(fn))(plb);
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
catch(const exception::dispatch_error &e){
|
|
||||||
throw exception::eval_error(std::string(e.what()) + " with function '" + this->children[0]->text + "'");
|
|
||||||
}
|
|
||||||
catch(detail::Return_Value &rv) {
|
|
||||||
return rv.retval;
|
|
||||||
}
|
|
||||||
catch(...) {
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch(exception::eval_error &) {
|
catch(const exception::dispatch_error &e){
|
||||||
throw;
|
throw exception::eval_error(std::string(e.what()) + " with function '" + this->children[0]->text + "'");
|
||||||
|
}
|
||||||
|
catch(detail::Return_Value &rv) {
|
||||||
|
return rv.retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -468,9 +459,7 @@ namespace chaiscript
|
|||||||
catch(detail::Return_Value &rv) {
|
catch(detail::Return_Value &rv) {
|
||||||
retval = rv.retval;
|
retval = rv.retval;
|
||||||
}
|
}
|
||||||
catch(...) {
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
if (this->children[i]->identifier == AST_Node_Type::Array_Call) {
|
if (this->children[i]->identifier == AST_Node_Type::Array_Call) {
|
||||||
for (size_t j = 1; j < this->children[i]->children.size(); ++j) {
|
for (size_t j = 1; j < this->children[i]->children.size(); ++j) {
|
||||||
try {
|
try {
|
||||||
|
Reference in New Issue
Block a user