diff options
author | Leo Kettmeir <crowlkats@toaxl.com> | 2024-10-17 12:51:33 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-17 19:51:33 +0000 |
commit | 8cfd9968fa9ef79777ac2e7dfcef8f1ed618b78b (patch) | |
tree | ac2ab50a61283c096d6c474c3f5d9ffdb05dc48b /runtime | |
parent | 9fde5cb5e045551fe344b3f60370744eea30ccb4 (diff) |
refactor(ext/napi): use concrete error types (#26186)
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/errors.rs | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/runtime/errors.rs b/runtime/errors.rs index 99de6beb0..935f62d26 100644 --- a/runtime/errors.rs +++ b/runtime/errors.rs @@ -26,6 +26,7 @@ use deno_ffi::StaticError; use deno_kv::KvCheckError; use deno_kv::KvError; use deno_kv::KvMutationError; +use deno_napi::NApiError; use deno_net::ops::NetError; use deno_tls::TlsError; use deno_web::BlobError; @@ -174,6 +175,15 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str { } } +fn get_napi_error_class(e: &NApiError) -> &'static str { + match e { + NApiError::InvalidPath + | NApiError::LibLoading(_) + | NApiError::ModuleNotFound(_) => "TypeError", + NApiError::Permission(e) => get_error_class_name(e).unwrap_or("Error"), + } +} + fn get_web_error_class(e: &WebError) -> &'static str { match e { WebError::Base64Decode => "DOMExceptionInvalidCharacterError", @@ -443,6 +453,7 @@ 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)) .or_else(|| deno_websocket::get_network_error_class_name(e)) + .or_else(|| e.downcast_ref::<NApiError>().map(get_napi_error_class)) .or_else(|| e.downcast_ref::<WebError>().map(get_web_error_class)) .or_else(|| { e.downcast_ref::<CompressionError>() |