diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2023-04-27 22:36:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-27 23:36:49 +0200 |
commit | 504482dadd4d8cd9e4105d56ed86802906767f39 (patch) | |
tree | acacb80e50ccfae578822dda63a3ec9e61108d60 /core/inspector.rs | |
parent | 6cd62ea5e969de258b1d308daf5bec91e73e79d3 (diff) |
fix(repl): print unhandled rejections and event errors (#18878)
Fixes #8858.
Fixes #8869.
```
$ target/debug/deno
Deno 1.32.5
exit using ctrl+d, ctrl+c, or close()
REPL is running with all permissions allowed.
To specify permissions, run `deno repl` with allow flags.
> Promise.reject(new Error("bar"));
Promise { <rejected> Error: bar
at <anonymous>:2:16 }
Uncaught (in promise) Error: bar
at <anonymous>:2:16
> reportError(new Error("baz"));
undefined
Uncaught Error: baz
at <anonymous>:2:13
>
Diffstat (limited to 'core/inspector.rs')
-rw-r--r-- | core/inspector.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/core/inspector.rs b/core/inspector.rs index b0a55cf12..22d150154 100644 --- a/core/inspector.rs +++ b/core/inspector.rs @@ -231,6 +231,35 @@ impl JsRuntimeInspector { .context_destroyed(context); } + pub fn exception_thrown( + &self, + scope: &mut HandleScope, + exception: v8::Local<'_, v8::Value>, + in_promise: bool, + ) { + let context = scope.get_current_context(); + let message = v8::Exception::create_message(scope, exception); + let stack_trace = message.get_stack_trace(scope).unwrap(); + let mut v8_inspector_ref = self.v8_inspector.borrow_mut(); + let v8_inspector = v8_inspector_ref.as_mut().unwrap(); + let stack_trace = v8_inspector.create_stack_trace(stack_trace); + v8_inspector.exception_thrown( + context, + if in_promise { + v8::inspector::StringView::from("Uncaught (in promise)".as_bytes()) + } else { + v8::inspector::StringView::from("Uncaught".as_bytes()) + }, + exception, + v8::inspector::StringView::from("".as_bytes()), + v8::inspector::StringView::from("".as_bytes()), + 0, + 0, + stack_trace, + 0, + ); + } + pub fn has_active_sessions(&self) -> bool { self.sessions.borrow().has_active_sessions() } |