1 // Copyright (c) 2020, Parallax Software, Inc. 2 // 3 // This program is free software: you can redistribute it and/or modify 4 // it under the terms of the GNU General Public License as published by 5 // the Free Software Foundation, either version 3 of the License, or 6 // (at your option) any later version. 7 // 8 // This program is distributed in the hope that it will be useful, 9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 // GNU General Public License for more details. 12 // 13 // You should have received a copy of the GNU General Public License 14 // along with this program. If not, see <https://www.gnu.org/licenses/>. 15 16 %{ 17 %} 18 19 %exception { 20 try { $function } catch(std::bad_alloc &)21 catch (std::bad_alloc &) { 22 fprintf(stderr, "Error: out of memory."); 23 exit(0); 24 } 25 // This catches std::runtime_eror (utl::error) and sta::Exception. catch(std::exception & excp)26 catch (std::exception &excp) { 27 Tcl_ResetResult(interp); 28 Tcl_AppendResult(interp, excp.what(), nullptr); 29 return TCL_ERROR; 30 } 31 } 32