Originariamente inviato da XWolverineX
E' solo un mio parere, ma secondo me le eccezioni rappresentano un modo inutile per gestire le eccezioni.
Posso trovare qualche minima utilità solo nella creazione di librerie esterne da distribuire.
In altri casi, a che serve lanciare un'eccezione che poi io stesso intercetterò? (Della serie "Uso le librerie che io stesso scrivo e quindi ho il codice sorgente sotto mano)
Ci sono le funzioni get/set per evitare che un parametro sia errato.
Certo se tu preferisci usare codice del tipo (è pseudo codice non testato):
Codice PHP:
int MyHandleResource (){
int err = 0;
const char * kResId = "myResId";
Resource * aResource = NewResource ();
if (aResource){
if (LockResource (aResource, kResId)){
if (LoadResource (aResource, kResId)){
if (HandleResource (aResource)){
}
else{
err = 1;
HandleError ("HandleResource () error");
}
if (!UnloadResource (aResource)){
err = 2;
HandleError ("UnloadResourrce () error");
}
}
if (!UnlockResource (aResource, kResId)){
err = 3;
HandleError ("UnlockResource () error");
}
}
else{
err = 4;
HandleError ("LockResource () error");
}
if (!FreeResource (aResource)){
err = 5;
HandleError ("FreeResource () error");
}
aResource = NULL;
}
else{
err = 6;
HandleError ("NewResource () error");
}
return err;
}
rispetto a (è pseudo codice non testato)
Codice PHP:
void MyHandleResource (){
const char * kResId = "myResId";
Resource * aResource = NewResource ();
TempResource aTempResource (aResource);
TempLockResource aTempLockResource (aResource, kResId);
TempLoadResource aTempLoadResource (aResource);
RuntimeAssert (HandleResource (aResource));
}
buon per te
;-)