static EjsAny *createException(Ejs *ejs, EjsType *type, cchar* fmt, va_list fmtArgs) { EjsError *error; EjsAny *argv[1]; char *msg; assert(type); #if ME_DEBUG /* Breakpoint opportunity */ if (!ejs->empty) { mprNop(0); } #endif msg = sfmtv(fmt, fmtArgs); argv[0] = ejsCreateStringFromAsc(ejs, msg); if (argv[0] == 0) { assert(argv[0]); return 0; } if (EST(Error)->constructor.body.proc) { error = (EjsError*) ejsCreateInstance(ejs, type, 1, argv); } else { error = ejsCreatePot(ejs, type, 0); ejsSetProperty(ejs, error, ES_Error_message, ejsCreateStringFromAsc(ejs, msg)); } return error; }
/* * Create an exception object. */ static EjsVar *createException(Ejs *ejs, EjsType *type, cchar* fmt, va_list fmtArgs) { EjsVar *error, *argv[1]; char *msg; mprAssert(type); if (ejs->noExceptions) { return 0; } mprAllocVsprintf(ejs, &msg, MPR_MAX_STRING, fmt, fmtArgs); argv[0] = (EjsVar*) ejsCreateString(ejs, msg); if (argv[0] == 0) { mprAssert(argv[0]); return 0; } error = (EjsVar*) ejsCreateInstance(ejs, type, 1, argv); if (error == 0) { mprAssert(error); return 0; } mprFree(msg); return error; }