Class ini memiliki ketergantungan dengan script Base.js hasil karya Dean Edwards. Class ini berfungsi untuk mengolah pesan-pesan kesalahan. Secara default ditampilkan menggunakan fungsi alert().
Mungkin script ini kurang bersih atau nyampah. Sepertinya ada bagian-bagian tertentu yang sepertinya tidak terpakai. Karena saya sendiri masih belum yakin, jadi saya biarkan dulu.
| Metode yang digunakan |
Keterangan | ||||||
| Error(sMsg,sID,sType) | Menyimpan pesan kesalahan ke property dan menampilkannya di console bila ada. Dan menggunakan alert() bila console tidak bisa dijangkau.
|
||||||
| ErrorProperty(sProperty,sMsg) | Mirip dengan Error(). Hanya menambahkan kata “Property” saja.Misal: ErrorProperty("Anu","belum didifinisikan")
akan menampilkan pesan error, “Property Anu belum didefinisikan”.
|
||||||
| ErrorParameter(sParameter,sMsg) | Sama dengan ErrorParameter. Hanya menambahkan kata “Parameter” saja.
|
||||||
| isError() | Untuk memeriksa apakah ada pesan kesalahan. Nilai yang dikembalikan data boolean atau true atau false. | ||||||
| transError(oTgt,oSrc) | Menyamakan pesan kesalahan dari object oSrc ke object oTgt.
|
Contoh pemakaian.
var FTest=FError.extend({
sTitle:"Testing Object",
constructor:function(sVarName)
{
var err=this.ErrHead+".constructor()\n";
if(!sVarName){this.Error(err+"Parameter sVarName was empty");return this;}
this.sVarName=sVarName;
this.ErrHead="[ERROR] "+this.sVarName+"::";
},
testParm:function(sParameter)
{
if(!sParameter){this.ErrorParameter("sParameter","was empty");return;}
},
testProp:function(propName)
{
if(!propName){this.ErrorParameter("propName","was empty");return;}
eval("var prop=this."+propName+";");
if(!prop){this.ErrorProperty(propName,"was empty");return;}
}
})
var MyTest=new FTest("MyTest");
if(MyTest.isError()){MyTest.actQuit();}
else
{
MyTest.testProp("test");
}
Script lengkapnya sebagai berikut:
var FError = Base.extend(
{
version :"1.0.0",
createBy:"http://www.rindudendam.net",
sVarName:"",
ErrMsg :"", /*Last Error*/
ErrID :"", /*Last Error ID*/
ErrType :"", /*Last Error Type*/
ErrHead :"ERROR::"+this.sVarName,
arErr :[], /*{Msg:ErrMsg,ID:ErrID,Type:ErrType}*/
constructor:function(arErrLib)
{
this.arErrLib=arErrLib;
},
_setParent:function()
{
var err=this.ErrHead+"._setParent() \n";
if(!this.sVarName){return;};
var arVar=this.sVarName.split(".");
var theS="";
for(var i in arVar)
{
if(!isNaN(i))
{
if(i != (arVar.length-1)){theS+=arVar[i]+".";};
}
}
var sParent=theS.substring(0,theS.length-1);
eval("this.parent="+sParent+";");
if(typeof(this.parent) != "object"){this.Error(err+"\nFailed to detect parent "+sParent);return;}
return true;
},
clearErr:function()
{
this.ErrMsg="";
this.ErrMsgID="";
this.ErrType="";
},
push2Array:function()
{
this.arErr.push({
Msg:this.ErrMsg,
ID:this.ErrID,
Type:this.ErrType
});
},
Error:function(sMsg,sID,sType)
{
var funct= this.ErrHead+".Error \n";
sType = (sType) ? sType : "error" ;
if(!sMsg.trim())
{
this.ErrMsg=funct+"No Msg found";
this.ErrID="err000";
return;
}
this.clearErr();
this.ErrID = (sID) ? sID : "undefined" ;
this.ErrMsg = sMsg;
this.ErrType = sType;
this.push2Array();
this.ErrorAlert();
return true;
},
ErrorProperty:function(sPropertyName,sMsg)
{
var funct=this.ErrHead+".ErrorProperty \n";
if(!sPropertyName.trim()){this.Error(funct+"Parameter sPropertyName was empty");return;};
if(!sMsg.trim()){this.Error(funct+"Parameter sMsg was empty");return;};
this.Error(this.sVarName+" \nProperty "+this.sVarName+"::"+sPropertyName+" "+sMsg);
return true;
},
ErrorParameter:function(sParameterName,sMsg)
{
var funct=this.ErrHead+".ErrorProperty \n";
if(!sPropertyName.trim()){this.Error(funct+"Parameter sPropertyName was empty");return;};
if(!sMsg.trim()){this.Error(funct+"Parameter sMsg was empty");return;};
this.Error(this.sVarName+" \nParameter "+this.sVarName+"::"+sParameterName+" "+sMsg);
return true;
},
ErrorAlert:function()
{
if(window.console)
{
if(window.console.error){window.console.error(this.ErrMsg);}
else if(window.console.log){window.console.log(this.ErrMsg);}
else{alert(this.ErrMsg);};
}
else if(window.opera){window.opera.postError(msg);}
},
isError:function()
{
return (this.ErrMsg) ? true : false ;
},
transError:function(Tgt,Src)
{
if(typeof(Tgt) != "object"){this.ErrorParameter("Tgt","was not object");return;};
if(typeof(Src) != "object"){this.ErrorParameter("Src","was not object");return;};
Tgt.ErrMsg =Src.ErrMsg;
Tgt.ErrID =Src.ErrID;
Tgt.ErrType =Src.ErrType;
Tgt.push2Array();
},
actQuit:function()
{
if(this.eventMan)
{
if(this.eventMan.actQuit){this.eventMan.actQuit();}
}
for(var i in this)
{
eval("var oSub=this."+i+";");
if(oSub)
{
if(oSub==this.parent || typeof(oSub)=="function"){continue;}
if(oSub.actQuit)
{
oSub.actQuit();
}
else if(oSub.nodeName)
{
if(oSub.parentNode){oSub.parentNode.removeChild(oSub);}
oSub=null;
}
else if(typeof(oSub) == "object" && oSub.length)
{
for(var ix in oSub)
{
if(!isNaN(ix))
{
if(oSub[ix] == null){continue;}
if(oSub[ix].nodeName)
{
if(oSub[ix].parentNode){oSub[ix].parentNode.removeChild(oSub[ix]);}
oSub[ix]=null;
}
}
}
}
}
}
if(window.oZIndex)
{
oZIndex.resetH();
oZIndex.getHigher();
}
if(this.sVarName)
{
eval("if(window."+this.sVarName+" instanceof Object){try{window."+this.sVarName+"=null;delete window."+this.sVarName+";}catch(e){_addDbg("+this.sVarName+");_addDbg(e);};};");
}
return true;
}
});

