UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

47 lines (43 loc) 1.32 kB
// https://ocjs.org/docs/advanced/exceptions/catch-exceptions import type {OpenCascadeInstance} from './CadCommon'; import {CadLoaderSync} from './CadLoaderSync'; type Callback = () => void; export function withCadException<T>(oc: OpenCascadeInstance, callback: Callback): T | void { try { return callback(); } catch (e) { const message = cadProcessError(e); console.log(`That didn't work because: ${message}`); console.log(e, message); // if (typeof e === 'number') { // const exceptionData = oc.OCJS.getStandard_FailureData(e); // } else { // console.log('Unkown error'); // console.log(e); // } // } } } interface ErrorWithMessage { message: string; } export function cadProcessError(e: unknown) { const oc = CadLoaderSync.oc(); console.warn(e, typeof e === 'number'); if (typeof e === 'number') { const exceptionData = oc.OCJS.getStandard_FailureData(e); console.log(exceptionData.GetMessageString()); return exceptionData.GetMessageString(); // console.log(`That didn't work because: ${exceptionData.GetMessageString()}`); // console.log(e, exceptionData); } else { const message = (e as ErrorWithMessage).message; console.log(e, message); if (typeof message === 'string') { return message; } else { console.log(e); return 'Unknow CAD Error'; } } }