diff --git a/src/api/api_opt.cpp b/src/api/api_opt.cpp index 495a2b1e5..21c55f428 100644 --- a/src/api/api_opt.cpp +++ b/src/api/api_opt.cpp @@ -140,6 +140,9 @@ extern "C" { r = to_optimize_ptr(o)->optimize(); } catch (z3_exception& ex) { + if (!mk_c(c)->m().canceled()) { + mk_c(c)->handle_exception(ex); + } r = l_undef; if (ex.msg() == std::string("canceled") && mk_c(c)->m().canceled()) { to_optimize_ptr(o)->set_reason_unknown(ex.msg()); diff --git a/src/api/api_solver.cpp b/src/api/api_solver.cpp index 119965d5a..ab1ea4a8e 100644 --- a/src/api/api_solver.cpp +++ b/src/api/api_solver.cpp @@ -392,7 +392,9 @@ extern "C" { } catch (z3_exception & ex) { to_solver_ref(s)->set_reason_unknown(eh); - mk_c(c)->handle_exception(ex); + if (!mk_c(c)->m().canceled()) { + mk_c(c)->handle_exception(ex); + } return Z3_L_UNDEF; } }