@@ -188,6 +188,7 @@ typedef enum JSErrorEnum {
188
188
JS_AGGREGATE_ERROR,
189
189
190
190
JS_NATIVE_ERROR_COUNT, /* number of different NativeError objects */
191
+ JS_PLAIN_ERROR = JS_NATIVE_ERROR_COUNT
191
192
} JSErrorEnum;
192
193
193
194
#define JS_MAX_LOCAL_VARS 65535
@@ -6601,8 +6602,11 @@ static JSValue JS_ThrowError2(JSContext *ctx, JSErrorEnum error_num,
6601
6602
JSValue obj, ret, msg;
6602
6603
6603
6604
vsnprintf(buf, sizeof(buf), fmt, ap);
6604
- obj = JS_NewObjectProtoClass(ctx, ctx->native_error_proto[error_num],
6605
- JS_CLASS_ERROR);
6605
+ if (error_num == JS_PLAIN_ERROR)
6606
+ obj = JS_NewError(ctx);
6607
+ else
6608
+ obj = JS_NewObjectProtoClass(ctx, ctx->native_error_proto[error_num],
6609
+ JS_CLASS_ERROR);
6606
6610
if (unlikely(JS_IsException(obj))) {
6607
6611
/* out of memory: throw JS_NULL to avoid recursing */
6608
6612
obj = JS_NULL;
@@ -6636,6 +6640,17 @@ static JSValue JS_ThrowError(JSContext *ctx, JSErrorEnum error_num,
6636
6640
return JS_ThrowError2(ctx, error_num, fmt, ap, add_backtrace);
6637
6641
}
6638
6642
6643
+ JSValue __attribute__((format(printf, 2, 3))) JS_ThrowPlainError(JSContext *ctx, const char *fmt, ...)
6644
+ {
6645
+ JSValue val;
6646
+ va_list ap;
6647
+
6648
+ va_start(ap, fmt);
6649
+ val = JS_ThrowError(ctx, JS_PLAIN_ERROR, fmt, ap);
6650
+ va_end(ap);
6651
+ return val;
6652
+ }
6653
+
6639
6654
JSValue __attribute__((format(printf, 2, 3))) JS_ThrowSyntaxError(JSContext *ctx, const char *fmt, ...)
6640
6655
{
6641
6656
JSValue val;
0 commit comments