Can';catch javascript中的t access变量
我在函数中声明了一个变量Can';catch javascript中的t access变量,javascript,google-apps-script,scope,Javascript,Google Apps Script,Scope,我在函数中声明了一个变量aliasError,并尝试在该变量中存储使用try/catch块捕获的错误值 但是,我无法访问catch块中的变量。我可以在try块和try/catch块之外访问它 不确定这是javascript还是google应用程序脚本问题 以下是一个片段: function onFormSubmit(e) { //...........// var aliasError; // VARIABLE DECLARED // CREATE UPDATES IN
aliasError
,并尝试在该变量中存储使用try/catch块捕获的错误值
但是,我无法访问catch块中的变量。我可以在try
块和try/catch块之外访问它
不确定这是javascript还是google应用程序脚本问题
以下是一个片段:
function onFormSubmit(e)
{
//...........//
var aliasError; // VARIABLE DECLARED
// CREATE UPDATES IN GMAIL
// 1. ALIASES
// do we need a new account and if not, then the latest account
var conciergeStatus = getConcierge();
var newAccountNeeded;
parseInt(conciergeStatus[0]) == 1 ? newAccountNeeded = true : newAccountNeeded = false;
if(newAccountNeeded)
{
//..........//
}
else
{
var conciergeAccount = conciergeStatus[2];
conciergeAccLog = conciergeAccount;
Logger.log("*******************UPDATING CONCIERGE ACCOUNT************************");
Logger.log(conciergeAccount["name"]);
var aliases = conciergeAccount["aliases"];
var userEmail = conciergeAccount["primaryEmail"];
conciergeEmail = userEmail;
var alias = {
alias: responseMap["Alias email"]
};
Logger.log(userEmail);
Logger.log(alias);
aliasError = "No error"; // VARIABLE ACCESSED SUCCESSFULLY
try
{
aliasError = "No error"; // VARIABLE ACCESSED SUCCESSFULLY
AdminDirectory.Users.Aliases.insert(alias, userEmail);
}
catch(err)
{
aliasError = err; // VARIABLE ACCESS FAILED
}
Logger.log(aliases);
}
//..............//
}
如何克服此问题?如果您要尝试用console.log(aliasError)替换catch语句中的赋值行以更改颜色?原因以下代码将显示变量在catch语句中非常容易访问:
function x(){
var aliasError = 10;
try
{
aliasError = "No error"; // VARIABLE ACCESSED SUCCESSFULLY
xx=yy;
}
catch(err)
{
aliasError = err; // VARIABLE ACCESS FAILED
}
console.log(aliasError)
}
x();
在编辑器中拥有状态解析不是一项简单的任务。我从未使用过谷歌编辑器,但我不会100%信任编辑器的代码分析。事实上,你不能。这不是google应用程序脚本编辑器或运行时问题,而是Javascript规范的一部分。catch块创建了一个新的变量声明环境(一个新范围),其中catch块中唯一可访问的变量是作为catch参数的异常本身。有关完整的ECMA规范,请参见此处是否确定该规范被拒绝。您是否尝试分配“error here”之类的值,并查看是否设置了该值?如何在catch块之后检查此变量的内容?Google脚本编辑器会根据变量的状态更改其颜色。新声明为深蓝色,有效变量访问为浅蓝色,黑色表示未定义的变量<代码>别名错误在
try
和catch
外部为浅蓝色,但在catch
内部为黑色。