@@ -193,6 +193,7 @@ typedef enum JSErrorEnum {
193
193
JS_AGGREGATE_ERROR,
194
194
195
195
JS_NATIVE_ERROR_COUNT, /* number of different NativeError objects */
196
+ JS_PLAIN_ERROR = JS_NATIVE_ERROR_COUNT
196
197
} JSErrorEnum;
197
198
198
199
#define JS_MAX_LOCAL_VARS 65535
@@ -6638,8 +6639,11 @@ static JSValue JS_ThrowError2(JSContext *ctx, JSErrorEnum error_num,
6638
6639
JSValue obj, ret, msg;
6639
6640
6640
6641
vsnprintf(buf, sizeof(buf), fmt, ap);
6641
- obj = JS_NewObjectProtoClass(ctx, ctx->native_error_proto[error_num],
6642
- JS_CLASS_ERROR);
6642
+ if (error_num == JS_PLAIN_ERROR)
6643
+ obj = JS_NewError(ctx);
6644
+ else
6645
+ obj = JS_NewObjectProtoClass(ctx, ctx->native_error_proto[error_num],
6646
+ JS_CLASS_ERROR);
6643
6647
if (unlikely(JS_IsException(obj))) {
6644
6648
/* out of memory: throw JS_NULL to avoid recursing */
6645
6649
obj = JS_NULL;
@@ -6673,6 +6677,17 @@ static JSValue JS_ThrowError(JSContext *ctx, JSErrorEnum error_num,
6673
6677
return JS_ThrowError2(ctx, error_num, fmt, ap, add_backtrace);
6674
6678
}
6675
6679
6680
+ JSValue __attribute__((format(printf, 2, 3))) JS_ThrowPlainError(JSContext *ctx, const char *fmt, ...)
6681
+ {
6682
+ JSValue val;
6683
+ va_list ap;
6684
+
6685
+ va_start(ap, fmt);
6686
+ val = JS_ThrowError(ctx, JS_PLAIN_ERROR, fmt, ap);
6687
+ va_end(ap);
6688
+ return val;
6689
+ }
6690
+
6676
6691
JSValue __attribute__((format(printf, 2, 3))) JS_ThrowSyntaxError(JSContext *ctx, const char *fmt, ...)
6677
6692
{
6678
6693
JSValue val;
0 commit comments