Sezione 8

Errori, moduli e file LINE

Gestione degli errori con TRY/SHOW/YET, moduli standard e file .line.

Progresso del corso 80%

Codici di errore

CodiceCausa
VAR_NOT_FOUNDVariabile inesistente
TYPE_ERRORTipo di dato non valido
INVALID_CONVERSIONConversione di tipo non possibile
CONST_MODIFYTentativo di modifica di una costante (STAY)
DIV_BY_ZERODivisione per zero
MATH_ERROROperazione matematica non valida
BOOL_EXPECTEDAtteso valore booleano
NUMBER_EXPECTEDAtteso valore numerico
STRING_EXPECTEDAttesa stringa
LIST_NOT_FOUNDLista inesistente
LIST_OUT_OF_RANGEIndice fuori dai limiti della lista
LIST_EMPTYLista vuota
TAG_NOT_FOUNDTag inesistente nella lista
DUPLICATE_TAGTag duplicato non consentito
FUNC_NOT_FOUNDFunzione inesistente
INVALID_ARGUMENTSArgomenti non validi
RETURN_NOT_ALLOWEDUso di return non consentito
THEN_ARGUMENTSUso di argomenti in un blocco THEN
IF_NOT_FOUNDIF block inesistente
GO_INVALIDGO block non valido
GO_LOOP_ERRORLoop infinito o non valido
INPUT_ERRORErrore nell'input
OUTPUT_ERRORErrore di output
SYNTAX_ERRORErrore di sintassi
ESCAPE_ERROREscape non valido
MOD_NOT_FOUNDModulo non trovato
UNKNOWN_ERRORErrore sconosciuto

TRY / SHOW / YET

Permettono di gestire errori di esecuzione senza interrompere bruscamente il programma.

TRY nome_try
    ...codice che potrebbe dare errore...
    TREND

  SHOW nome_show @nome_try
    ...eseguito solo se c'è stato un errore...
    SEND

  YET @nome_try
    ...eseguito sempre (con o senza errore)...
    YEND

SHOW e YET sono facoltativi.

All'interno di SHOW sono disponibili due variabili speciali — esistono solo lì:

VariabileTipoContenuto
ERRCODEnumerale1 per tutti gli errori gestiti da LINE
ERRMSGstringaMessaggio descrittivo dell'errore
TRY prova
    OUT @inesistente
    TREND

  SHOW gestisci @prova
    TALK @ERRCODE
    TALK @ERRMSG
    SEND

  YET @prova
    TALK Fine operazione
    YEND

Regole

Moduli

I moduli sono collezioni di funzioni pronte all'uso. Si importano con TAKE:

TAKE math
  #r = math_sqrt(9)
  TALK @r   >> 3

Le funzioni di un modulo si chiamano con il formato nomemodulo_nomefunzione().

Per vedere l'elenco di tutti i moduli disponibili, esegui .MODS in un file vuoto. Per vedere le funzioni di un modulo specifico, usa .MATH, .STR, ecc.

ModuloContenuto
mathFunzioni matematiche (sqrt, abs, floor, ceil, pow, sin, cos…)
strManipolazione stringhe (len, sub, upper, lower, replace…)
listOperazioni su liste (len, has, sort, rev, shuffle…)
randCasualità (int, float, pick, shuffle, dice…)
ioInput/output avanzato (time, date…)
typeVerifica e conversione di tipi
convConversioni (hex, bin, oct, tonum…)
numFunzioni numeriche avanzate (fmt, fib, fact, gcd, prime…)

File LINE

Un programma LINE viene salvato con estensione .line ed eseguito dall'interprete.