Salta al contenuto
Nessun risultato
  • Account
  • Articoli e libri
  • bbpress template
  • Calcolatrice legge di Ohm
  • Calcolatrici e convertitori
  • Convertitore Farad condensatori
  • Convertitore Ohm resistenze
  • Convertitore sistema numerico
  • Datasheet
  • Download
  • GeXY… Idea!
  • Login
  • Password Reset
  • Privacy e condizioni
  • Progetti
  • Video list
GeXY
Login/registrati
  • Progetti
  • Forum
  • Risorse
    • Datasheets
    • Calcolatrici & convertitori
    • Libri & articoli
    • Video
GeXY

OpenLab Developer

9
  • Implementare un logger storage
  • Creare un plugin base

OpenLab Studio Developer

7
  • Gestore degli errori
  • Schemi validazione configurazione
  • Elenco eventi standard
  • Logger standard
  • Logger base
  • Gestore degli eventi
  • Gestore della UI
View Categories
  • Home
  • OpenLab Docs
  • OpenLab Developer
  • OpenLab Studio Developer
  • Gestore degli errori

Gestore degli errori

1 min read

OpenLab Studio >= 0.16.x
OpenLab C >= 0.16.x
Linguaggi C#

Generale #

Gli errori, eccezioni, crash report e situazioni simili sono gestite dalla classe ErrorReport. Questa classe svolge i seguenti compiti:

  • Distribusce un collegamento con il logger tramite il metodo getLog()
  • Mostra il Crash report
  • Fornisce un meccanismo di chiusura d’emergenza di OpenLab Studio in caso di errori irrecuperabili

E’ presente prativamente ovunque tramite la variabile errorManager.

Eccezioni #

Quando si vuole lanciare un eccezione va usata la classe OLSException che è stata derivata dalla classe standard Exception. Qualsiasi eccezione che deve essere implementata va derivata da questa classe. All’interno la classe OLSException è stato implementato un meccanismo che scrive nel log un messaggio di errore e lancia in automatico il crash report che mostra all’utente i dettagli dell’errore e, in base ai parametri passati all’eccezione, permette o meno di continuare con l’esecuzione del programma. Di seguito un esempio:

if(value<0){
     throw new OLSException(errorManager, "value less then 0");
}

La chiamata sopra visualizzerà un crash report che permette di essere chiuso e continuare, e scriverà il messagio nel log.

 

try{
   // write in file
}catch(Exception e){
   throw new OLSException(errorManager,e,"Error: write is not possible")
}

in questo modo l’eccezione occorsa nella scrittura del file viene incartata all’interno di OLSException.

In tutte le chiamate, passando true come ultimo parametro, viene visualizzato un crash report che permette solamente la chiusura del programma.

Crash #

Quando si vuole lanciare un eccezione per un evento grave, non recuperabile, che costringa alla chiusura del programma usare la classe OLSCrash. Funziona esattamente come OLSException  mostra un crash report che permette solo la chiusura del programma.

Emergency exit #

Sia nel caso venga lanciata un eccezione di tipo OLSException, e l’utente scelga di non continuare(tasto Exit ) o che venga lanciata una di tipo OLSCrash, viene eseguita la procedura di uscita d’emergenza. In qualsiasi punto sia accessibile l’error manager è possibile aggiungere un handler di uscita d’emergenza. Quando verrà lanciata l’uscita d’emergenza verranno eseguiti tutti gli handler e poi chiuso il programma con il valore di ritorno 9999.

Questo meccanismo serve per evitare una chiusura incontrollata del programma e evitare incoerenze. Ad esempio nel caso in cui un modulo hardware abbia bisogno di una procedura di stop o altri casi in cui è necessaria la sicurezza che delle operazioni vengano eseguite prima della chiusura del programma in caso d’errore. Pe aggiungere un EmergencyExitHandler  usare il metodo addEmergencyExitHandler() in questo modo:

errorManager.addEmergencyExitHandler( () => {
    // for exemple: send stop command to hardware module 
});

 

Updated on 09/09/2025

What are your Feelings

  • Happy
  • Normal
  • Sad

Share This Article :

  • Facebook
  • X
  • LinkedIn
  • Pinterest

Powered by BetterDocs

Table of Contents
  • Generale
  • Eccezioni
  • Crash
  • Emergency exit
Copyright © 2025 - Tema WordPress sviluppato da CreativeThemes