Mantis - ALGLIB
Viewing Issue Advanced Details
824 Optimization minor always 2018-09-04 11:57 2019-12-18 15:54
rmanthorpe  
SergeyB  
normal  
resolved 3.14.0  
fixed  
none    
none 3.16.0  
C++
0000824: FIXED: breaking change in exception handling in user callbacks
Fixed. Now exceptions generated in user callbacks are forwarded to external code.

---------------------------------------------------------------

The example below should print "user error" but instead prints "ALGLIB: exception generated in user callback". This change happened between 3.12 and 3.13. It's now no longer possible to find out what caused optimisation to fail, only that an exception was thrown.

test.cpp
---------------------------------------------------------------
#include "optimization.h"
#include <cstdio>

void callback(const alglib::real_1d_array&, alglib::real_1d_array&, void*)
{
    throw "user error";
}

int main()
{
    alglib::minlmstate state;
    alglib::real_1d_array x;
    x.setlength(1);
    alglib::minlmcreatev(1, x, 1e-5, state);
    try
    {
        alglib::minlmoptimize(state, &callback);
    }
    catch (const char* e)
    {
        std::printf(e);
    }
    catch (alglib::ap_error& e)
    {
        std::printf(e.msg.c_str());
    }
    return 0;
}
Issue History
2018-09-04 11:57 rmanthorpe New Issue
2018-09-04 11:57 rmanthorpe Programming language => C++
2019-09-03 16:26 SergeyB Target Version => 3.16.0
2019-12-18 15:53 SergeyB Status new => assigned
2019-12-18 15:53 SergeyB Assigned To => SergeyB
2019-12-18 15:53 SergeyB Status assigned => resolved
2019-12-18 15:53 SergeyB Fixed in Version => 3.16.0
2019-12-18 15:53 SergeyB Resolution open => fixed
2019-12-18 15:54 SergeyB Summary Breaking change in minlmoptimize exception handling => FIXED: breaking change in exception handling in user callbacks
2019-12-18 15:54 SergeyB Description Updated

There are no notes attached to this issue.