diff options
| author | Leo Kettmeir <crowlkats@toaxl.com> | 2024-10-12 08:20:17 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-12 08:20:17 -0700 |
| commit | 3df8f1650039e9453056d516744e755d6be8801b (patch) | |
| tree | 8963fe708ae5c73c6122bd21d40bd6fcf02de31e /runtime | |
| parent | 9117a9a43cba86d3112f86b10c5ea77baa2c6007 (diff) | |
refactor(ext/broadcastchannel): use concrete error type (#26105)
Diffstat (limited to 'runtime')
| -rw-r--r-- | runtime/errors.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/runtime/errors.rs b/runtime/errors.rs index 694402773..476aae63b 100644 --- a/runtime/errors.rs +++ b/runtime/errors.rs @@ -9,6 +9,7 @@ //! Diagnostics are compile-time type errors, whereas JsErrors are runtime //! exceptions. +use deno_broadcast_channel::BroadcastChannelError; use deno_core::error::AnyError; use deno_core::serde_json; use deno_core::url; @@ -153,6 +154,19 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str { } } +fn get_broadcast_channel_error(error: &BroadcastChannelError) -> &'static str { + match error { + BroadcastChannelError::Resource(err) => { + deno_core::error::get_custom_error_class(err).unwrap() + } + BroadcastChannelError::MPSCSendError(_) => "Error", + BroadcastChannelError::BroadcastSendError(_) => "Error", + BroadcastChannelError::Other(err) => { + get_error_class_name(err).unwrap_or("Error") + } + } +} + pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> { deno_core::error::get_custom_error_class(e) .or_else(|| deno_webgpu::error::get_error_class_name(e)) @@ -160,6 +174,10 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> { .or_else(|| deno_webstorage::get_not_supported_error_class_name(e)) .or_else(|| deno_websocket::get_network_error_class_name(e)) .or_else(|| { + e.downcast_ref::<BroadcastChannelError>() + .map(get_broadcast_channel_error) + }) + .or_else(|| { e.downcast_ref::<dlopen2::Error>() .map(get_dlopen_error_class) }) |
