try-catch返回未定义的变量
try-catch returns variable as undefined
假设两次尝试都失败,则url返回为未定义,并且在这种情况下不会执行console.log。我的try-catch子句的堆叠有问题吗,或者url变量的范围有问题吗?
我使用try-catch是因为在我的上下文url1,2中,默认值可能不可用。
getURL = function()
{
var url;
try{
url=data.url1;
}
catch(err1)
{
try{
url=data.url2;
}
catch(err2)
{
console.log("Fetching default url");
url=data.defaulturl;
}
}
finally
{
//do something with url
}
}
我尝试使用if-else-if结构,但如果数据.url 1/2/default不可用,它会返回错误。
if('String' === typeof data.url1)
{
}
else if(check for url 2/default etc.){...}
我最后一次尝试重新发明这个问题。。。但是,如果所有密钥都未定义,或者URL加载不成功,则根本没有成功。
getURL = function() {
var localData = data || {};
var keys = ['url1', 'url2', 'defaulturl'];
var success = false;
var currentKey;
while (!success && keys.length > 0) {
currentKey = keys.shift();
if (localData.hasOwnProperty(currentKey)
&& 'string' === typeof localData[currentKey]) {
try {
url = localData[currentKey];
// Url loading code may throws an exception,
// or you can throw it below by hands if needed
// Emulate loading result...
if (Math.random() > .5) {
throw 'Error in ' + localData[currentKey] + ' loading';
}
success = true;
} catch(exception) {
// Logging or something else here
console.log(exception.toString());
}
}
}
}
相关文章:
- Javascript变量未定义,onchange不起作用
- 定义的变量未定义
- 无法弄清楚为什么本机 Promise 变量未定义
- Windows 8 Javascript 疯狂 - 变量未定义
- $rootScope变量未定义
- 变量未定义
- Javascript:TypeError变量未定义
- 变量未定义/超出范围
- javascript变量未定义
- Javascript变量未定义错误
- $scope变量未定义,尽管它是在$watch函数内部设置的
- 类型错误:变量未定义
- AngularJs $http变量未定义
- JQuery:创建扩展返回变量未定义
- d3.js变量未定义,但在Firefox控制台中,它可以工作
- Javascript 中用于上传表单数据的变量未定义
- 节点.js模块级变量未定义
- Node.js req.session 变量未定义
- 错误:AngularJs 变量未定义,当使用 grunt 运行时.(泽泽尔)
- 将字符串拆分为两个变量 - 未定义不是一个函数