diff --git a/interfaces/kits/js/src/common/napi/n_async/n_async_work_callback.cpp b/interfaces/kits/js/src/common/napi/n_async/n_async_work_callback.cpp index 0cca524128405cfc371c7071833efcc7b0a0a737..6a59fbbc32cce512af6ecff8a3b56dfc1eee7ce5 100644 --- a/interfaces/kits/js/src/common/napi/n_async/n_async_work_callback.cpp +++ b/interfaces/kits/js/src/common/napi/n_async/n_async_work_callback.cpp @@ -47,18 +47,20 @@ static void CallbackComplete(napi_env env, napi_status status, void *data) ctx->cbComplete_ = nullptr; } + napi_value global = nullptr; + napi_value callback = ctx->cb_.Deref(env).val_; + napi_value tmp = nullptr; + napi_get_global(env, &global); + napi_status stat; + vector argv; if (!ctx->res_.TypeIsError(true)) { argv = { UniError(ERRNO_NOERR).GetNapiErr(env), ctx->res_.val_ }; + stat = napi_call_function(env, global, callback, argv.size(), argv.data(), &tmp); } else { - argv = { ctx->res_.val_ }; + stat = napi_call_function(env, global, callback, 1, &(ctx->res_.val_), &tmp); } - napi_value global = nullptr; - napi_value callback = ctx->cb_.Deref(env).val_; - napi_value tmp = nullptr; - napi_get_global(env, &global); - napi_status stat = napi_call_function(env, global, callback, argv.size(), argv.data(), &tmp); if (stat != napi_ok) { HILOGE("Failed to call function for %{public}d", stat); } diff --git a/interfaces/kits/js/src/common/uni_error.cpp b/interfaces/kits/js/src/common/uni_error.cpp index 35f8db1b4c508b535539f8f05806e648b825ea2f..40b5251e1c5c6a563155d6dc50d1d01d306a9064 100644 --- a/interfaces/kits/js/src/common/uni_error.cpp +++ b/interfaces/kits/js/src/common/uni_error.cpp @@ -33,8 +33,16 @@ static napi_value GenerateBusinessError(napi_env env, int32_t errCode, string er napi_value msg = nullptr; code = NVal::CreateInt32(env, errCode).val_; msg = NVal::CreateUTF8String(env, errMsg).val_; - napi_create_error(env, nullptr, msg, &businessError); - napi_set_named_property(env, businessError, FILEIO_TAG_ERR_CODE.c_str(), code); + napi_status createRes = napi_create_error(env, nullptr, msg, &businessError); + if (createRes != napi_ok) { + HILOGE("Failed to create an exception, msg = %{public}s", errMsg.c_str()); + return nullptr; + } + napi_status status = napi_set_named_property(env, businessError, FILEIO_TAG_ERR_CODE.c_str(), code); + if (status != napi_ok) { + HILOGE("INNER BUG. Cannot set named property because of %{public}d", status); + return nullptr; + } return businessError; }