summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
authorLeo Kettmeir <crowlkats@toaxl.com>2024-10-12 14:23:49 -0700
committerGitHub <noreply@github.com>2024-10-12 14:23:49 -0700
commit2ac699fe6e5b69f656046c5a9657542dc1cf2e9d (patch)
treec5999055791ab3ee740f8d9975d641e17aa05d42 /runtime
parent4f89225f76ca67e8a6385bbc52a73c284cc3402c (diff)
refactor(ext/cron): use concrete error type (#26135)
Diffstat (limited to 'runtime')
-rw-r--r--runtime/errors.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/runtime/errors.rs b/runtime/errors.rs
index daec653d1..51d6d96fa 100644
--- a/runtime/errors.rs
+++ b/runtime/errors.rs
@@ -16,6 +16,7 @@ use deno_core::error::AnyError;
use deno_core::serde_json;
use deno_core::url;
use deno_core::ModuleResolutionError;
+use deno_cron::CronError;
use std::env;
use std::error::Error;
use std::io;
@@ -156,6 +157,22 @@ pub fn get_nix_error_class(error: &nix::Error) -> &'static str {
}
}
+pub fn get_cron_error_class(e: &CronError) -> &'static str {
+ match e {
+ CronError::Resource(e) => {
+ deno_core::error::get_custom_error_class(e).unwrap_or("Error")
+ }
+ CronError::NameExceeded(_) => "TypeError",
+ CronError::NameInvalid => "TypeError",
+ CronError::AlreadyExists => "TypeError",
+ CronError::TooManyCrons => "TypeError",
+ CronError::InvalidCron => "TypeError",
+ CronError::InvalidBackoff => "TypeError",
+ CronError::AcquireError(_) => "Error",
+ CronError::Other(e) => get_error_class_name(e).unwrap_or("Error"),
+ }
+}
+
fn get_canvas_error(e: &CanvasError) -> &'static str {
match e {
CanvasError::UnsupportedColorType(_) => "TypeError",
@@ -194,7 +211,7 @@ pub fn get_error_class_name(e: &AnyError) -> Option<&'static str> {
.or_else(|| deno_web::get_error_class_name(e))
.or_else(|| deno_webstorage::get_not_supported_error_class_name(e))
.or_else(|| deno_websocket::get_network_error_class_name(e))
- .or_else(|| deno_websocket::get_network_error_class_name(e))
+ .or_else(|| e.downcast_ref::<CronError>().map(get_cron_error_class))
.or_else(|| e.downcast_ref::<CanvasError>().map(get_canvas_error))
.or_else(|| e.downcast_ref::<CacheError>().map(get_cache_error))
.or_else(|| {