From 1e44c375da642a8438e69dd91a1a7a41f29e7315 Mon Sep 17 00:00:00 2001 From: pjh456 <147148383@qq.com> Date: Sun, 7 Jun 2026 23:57:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=86=85=E5=BB=BA?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E5=BC=82=E5=B8=B8=E6=9C=AA=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E5=8C=85=E8=A3=85=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- crates/oxide_vm/src/vm.rs | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/crates/oxide_vm/src/vm.rs b/crates/oxide_vm/src/vm.rs index 14bf521b..7e614fc4 100644 --- a/crates/oxide_vm/src/vm.rs +++ b/crates/oxide_vm/src/vm.rs @@ -1260,7 +1260,22 @@ impl Vm { match func(self, args_slice) { Ok(val) => self.regs[0] = 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; @@ -1392,7 +1407,21 @@ impl Vm { match func(self, args_slice) { Ok(val) => self.regs[0] = 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), + } } } }