fix: 修复内建函数异常未统一包装的问题

This commit is contained in:
2026-06-07 23:57:11 +08:00
parent 4a9ad7b1fa
commit 1e44c375da
+31 -2
View File
@@ -1260,7 +1260,22 @@ impl Vm {
match func(self, args_slice) { match func(self, args_slice) {
Ok(val) => self.regs[0] = val, Ok(val) => self.regs[0] = val,
Err(err_val) => { Err(err_val) => {
return Err(format!("Native error: {:?}", err_val)); let msg = if err_val.is_string() {
self.kernel()
.string_forge()
.lookup(err_val.as_string_index())
.unwrap_or_else(|| format!("{err_val}"))
} else {
format!("{err_val}")
};
let error =
crate::builtins::error::create_error(self, &msg);
self.exception_value = Some(error);
self.pending_error_kind = Some("Error");
match self.unwind() {
Ok(()) => continue,
Err(e) => return Err(e),
}
} }
} }
continue; continue;
@@ -1392,7 +1407,21 @@ impl Vm {
match func(self, args_slice) { match func(self, args_slice) {
Ok(val) => self.regs[0] = val, Ok(val) => self.regs[0] = val,
Err(err_val) => { Err(err_val) => {
return Err(format!("Native error: {:?}", err_val)); let msg = if err_val.is_string() {
self.kernel()
.string_forge()
.lookup(err_val.as_string_index())
.unwrap_or_else(|| format!("{err_val}"))
} else {
format!("{err_val}")
};
let error = crate::builtins::error::create_error(self, &msg);
self.exception_value = Some(error);
self.pending_error_kind = Some("Error");
match self.unwind() {
Ok(()) => continue,
Err(e) => return Err(e),
}
} }
} }
} }