使用EncryptedLocalStore时发生Javascript错误

使用EncryptedLocalStore时发生Javascript错误,javascript,air,Javascript,Air,我正在尝试制作我的第一个基于JS的AdobeAIR应用程序 但我在某一点上卡住了 这是导致错误的代码 var RunUrl = 'http://www.lilpirate.net'; var firstRunUrl = 'http://www.netbloo.com'; var snxApp = air.EncryptedLocalStore.getItem( 'snxApp' ); var semail = snxApp.readUTFBytes( snx

我正在尝试制作我的第一个基于JS的AdobeAIR应用程序

但我在某一点上卡住了

这是导致错误的代码

  var RunUrl  =   'http://www.lilpirate.net';
  var firstRunUrl =   'http://www.netbloo.com';
  var snxApp   = air.EncryptedLocalStore.getItem( 'snxApp' );
  var semail   =   snxApp.readUTFBytes( snxApp.bytesAvailable );
  if( semail!='786') {
     data = new air.ByteArray();
     data.writeUTFBytes( '786' );
     air.EncryptedLocalStore.setItem( 'snxApp', data ); 
     var snxUrlToLoad    =   firstRunUrl;
  }
  else
     var snxUrlToLoad    =   RunUrl;  
从adl编译时,会抛出错误-

TypeError:表达式“snxApp”[null]的结果不是对象


救命啊

您正在访问
snxApp
的属性(
bytesavable
readUTFBytes
),而无需先检查以确保其存在。如果您还没有使用
setItem
来存储具有该名称的任何内容,那么它将是
null

下面是一个使用
if
语句的示例:

var snxApp = ...;
var semail;
if (snxApp !== null) {
    semail = snxApp.readUTFBytes( snxApp.bytesAvailable );
}
...

是的。我通过使用try-and-catch函数解决了这个问题。现在效果很好:-)谢谢@KPL:try/catch有效,但是如果在设置
semail之前添加
if(snxApp!==null)
检查,代码可能会更清晰。