summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorLeo Kettmeir <crowlkats@toaxl.com>2024-10-17 12:51:33 -0700
committerGitHub <noreply@github.com>2024-10-17 19:51:33 +0000
commit8cfd9968fa9ef79777ac2e7dfcef8f1ed618b78b (patch)
treeac2ab50a61283c096d6c474c3f5d9ffdb05dc48b /runtime
parent9fde5cb5e045551fe344b3f60370744eea30ccb4 (diff)
refactor(ext/napi): use concrete error types (#26186)
Diffstat (limited to 'runtime')
-rw-r--r--runtime/errors.rs11
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>()