From a077ae1bb9236a907f5615f8ccc04133405f948a Mon Sep 17 00:00:00 2001 From: fangJinliang1 Date: Mon, 19 Sep 2022 16:24:55 +0800 Subject: [PATCH] throw exception Signed-off-by: fangJinliang1 Change-Id: Iafcd100fcbb91930fac926585fb56f0512ecaa95 Signed-off-by: fangJinliang1 --- .../core/common/include/ans_inner_errors.h | 8 ++++++ frameworks/js/napi/include/common.h | 1 + frameworks/js/napi/src/common.cpp | 25 +++++++++++++++++++ frameworks/js/napi/src/publish.cpp | 2 ++ 4 files changed, 36 insertions(+) diff --git a/frameworks/core/common/include/ans_inner_errors.h b/frameworks/core/common/include/ans_inner_errors.h index 3fd34d197..c12ac8307 100644 --- a/frameworks/core/common/include/ans_inner_errors.h +++ b/frameworks/core/common/include/ans_inner_errors.h @@ -78,6 +78,14 @@ enum ErrorCode : uint32_t { ERR_ANS_PREFERENCES_NOTIFICATION_SLOT_ENABLED, ERR_ANS_DLP_HAP, }; + +// Common error code +const int32_t ERROR_CODE_PERMISSION_DENIED = 201; // The application does not have permission to call the interface. +const int32_t ERROR_CODE_PARAM_INVALID = 401; // Invalid input parameter. +const int32_t ERROR_CODE_SYSTEMCAP_ERROR = 801; // The specified SystemCapability names was not found. + +// Notification error code +const int32_t ERROR_CODE_NOTIFICATION_CLOSED = 1600001; // Notification is not enabled. } // namespace Notification } // namespace OHOS diff --git a/frameworks/js/napi/include/common.h b/frameworks/js/napi/include/common.h index 10181436b..7da6b52b5 100644 --- a/frameworks/js/napi/include/common.h +++ b/frameworks/js/napi/include/common.h @@ -1540,6 +1540,7 @@ public: const napi_env &env, const napi_value &value, NotificationRequest &request); static bool IsValidRemoveReason(int32_t reasonType); + static void NapiThrow(napi_env env, int32_t errCode); private: static const int32_t ARGS_ONE = 1; diff --git a/frameworks/js/napi/src/common.cpp b/frameworks/js/napi/src/common.cpp index 851a565b2..6eb41ca2d 100644 --- a/frameworks/js/napi/src/common.cpp +++ b/frameworks/js/napi/src/common.cpp @@ -14,6 +14,7 @@ */ #include "common.h" +#include "ans_inner_errors.h" #include "napi_common.h" #include "pixel_map_napi.h" @@ -21,6 +22,12 @@ namespace OHOS { namespace NotificationNapi { std::set> Common::wantAgent_; +static const std::unordered_map ErrorCodeToMsg { + {ERROR_CODE_PERMISSION_DENIED, "Permission denied"}, + {ERROR_CODE_PARAM_INVALID, "Invalid parameter"}, + {ERROR_CODE_SYSTEMCAP_ERROR, "SystemCapability not found"}, + {ERROR_CODE_NOTIFICATION_CLOSED, "Notification is not enabled"} +}; Common::Common() {} @@ -48,6 +55,24 @@ napi_value Common::NapiGetUndefined(napi_env env) return result; } +void Common::NapiThrow(napi_env env, int32_t errCode) +{ + ANS_LOGI("enter"); + + napi_value code = nullptr; + napi_create_int32(env, errCode, &code); + + auto iter = ErrorCodeToMsg.find(errCode); + std::string errMsg = iter != ErrorCodeToMsg.end() ? iter->second : ""; + napi_value message = nullptr; + napi_create_string_utf8(env, errMsg.c_str(), NAPI_AUTO_LENGTH, &message); + + napi_value error = nullptr; + napi_create_error(env, nullptr, message, &error); + napi_set_named_property(env, error, "code", code); + napi_throw(env, error); +} + napi_value Common::GetCallbackErrorValue(napi_env env, int32_t errCode) { napi_value result = nullptr; diff --git a/frameworks/js/napi/src/publish.cpp b/frameworks/js/napi/src/publish.cpp index 1298a13bb..6397226fd 100644 --- a/frameworks/js/napi/src/publish.cpp +++ b/frameworks/js/napi/src/publish.cpp @@ -15,6 +15,7 @@ #include "publish.h" +#include "ans_inner_errors.h" #include "want_agent_helper.h" namespace OHOS { @@ -112,6 +113,7 @@ napi_value Publish(napi_env env, napi_callback_info info) ParametersInfoPublish params; if (ParseParameters(env, info, params) == nullptr) { + Common::NapiThrow(env, ERROR_CODE_PARAM_INVALID); return Common::NapiGetUndefined(env); } -- Gitee