Gestione degli errori generalizzata di un'applicazione Cloud

,

La gestione degli errori è sempre un problema in un’applicazione complessa e se il programmatore non è diligente con il trap degli errori ci si può trovare ad avere problemi incontrollabili.

Su Instant Developer Foundation essendo il codice scritto in un metalinguaggio, che poi viene tradotto in C#, Java o JavaScript, il frame work quando genera i sorgenti aggiunge i try catch necessari e ogni errore che si verifica viene trappato e visualizzata una videata standard di errore.
Poi è possibile utilizzare l’evento di applicazione OnException dove posso fare cose.

Su Instant Developer Cloud come posso realizzare la stessa cosa?
Esiste il metodo App.setExceptionHandler() che posso utilizzare per realizzare una gestione errori personalizzata.
Nell’evento onStart dell’applicazione aggiungo questo codice:

  App.setExceptionHandler(app, function (error) {
    app.eccezioniNonGestite(error, function (result, error) {});
  });

Il metodo app.eccezioniNonGestite() può essere semplicemente questo:

  console.log("PG - exception", exception);
  //
  if (!!exception) {
    let e = exception.exception;
    console.log("PG - e", e);
    yield app.popup({type : "alert", title : "Attenzione si è verificato un errore non previsto!", subtitle : e.message, message : e.stack, buttons : ["Ok"]});
  }

Questo è naturalmente un esempio molto semplificato ma che dovrebbe rendere l’idea di come implementarlo seriamente.

5 Mi Piace

Grazie Paolo, suggerimento molto utile

1 Mi Piace

@f.carbotti quello che imparo nel realizzare le mie app e quando faccio cose con i miei allievi in formazione le condivido volentieri con tutti voi qui nella Community.

2 Mi Piace

Mi sono accorto che negli eventi di applicazione esiste onError che viene notificato quando si verifica un errore nell’applicazione e scatta sempre anche con il debug attivo.

Quindi si può utilizzare questo metodo per trappare gli errori non gestiti delle applicazioni di Instant Developer Cloud.

Unico posto dove gestirle in try catch è l’evento onStart.

3 Mi Piace