Home / Indice sezione
 www.icosaedro.it 

M2 Report

<= KeywordsSintassi =>
Frontespizio
Introduzione
Caratteristiche
Un semplice esempio
Moduli
Sezione IMPORT
Sezione CONST
Sezione TYPE
Tipo FORWARD
Sezione VAR
Sezione FUNCTION
Sezione BEGIN
Stringhe letterali
Sottostringhe
Commenti
Costanti predefinite
Variabili predefinite
Funzioni predefinite
Istruzione di assegnamento
Istruzione per la chiamata di funzione
Ordine di valutazione degli argomenti attuali
Istruzione IF
Istruzione SWITCH
Istruzione FOR
Istruzione WHILE
Istruzione REPEAT
Istruzione LOOP
Istruzione TRY
Istruzione RAISE ERROR
Istruzione RETURN
Espressioni logiche
Espressioni intere
Espressioni reali
Espressioni stringa
Espressioni tra tipi strutturati
Regole di scope
M2 per programmatori C
M2 per programmatori Java
Rappresentazione dei dati in memoria
Keywords
Messaggi di errore a runtime
Sintassi
 

Messaggi di errore a runtime

I messaggi di errore a runtime vengono inviati sullo stream di stantard error e provocano l'arresto del programma con procedura di abort. La procedura di abort consente il debugging del programma, per esempio con gdb:

gdb --args ./nomemodulo arg1 arg2 arg3

Il formato dei messaggi di errore è il seguente:

M.F(), line L: MSG

dove M è il nome del modulo, F è il nome della funzione, L è è il numero della linea del sorgente e MSG è il messaggio specifico. Vediamo nel seguito i possibili messaggi:

Substring of a NIL string
Non è possibile applicare l'operatore di sottostringa s[i,j] oppure s[i] perché la stringa s è NIL.

Invalid substring index
Non è possibile applicare l'operatore di sottostringa s[i] perché l'indice i è negativo oppure è maggiore di length(s)-1.

Invalid substring range
L'intervallo di sottostringa s[i,j] non è valido perché ricorre almeno una delle seguenti condizioni: il primo indice è negativo; il secondo indice è maggiore della lunghezza della stringa; il primo indice è maggiore del secondo.

Cannot dereference NIL array
Si è tentato di dereferenziare il valore di un elemento di un array al quale non è mai stato assegnato alcun elemento. Tutti gli array sono inizialmente NIL.

Array index is negative
L'indice dell'array ha un valore negativo. Gli indici degli array devono sempre essere positivi o nulli.

Array index too large
Si è tentato di dereferenziare il valore di un elemento di un array usando un indice maggiore dell'indice più grande correntemente presente nell'array. La funzione count(a) esportata dal modulo m2runtime dà il numero di elementi correntemente presenti nell'array a. Questo significa che l'indice deve essere minore di count(a). Notare che un array può contenere anche zero elementi pur essendo allocato: in questo caso nessun indice è valido e quindi anche 0 è "too large".

Cannot dereference NIL record
Si è tentato di ottenere il valore del campo di un record NIL.

Unexpected case in SWITCH
L'espressione all'interno della istruzione SWITCH ha prodotto un valore non previsto nell'elenco dei CASE.

Missing RETURN <expr>
L'esecuzione ha raggiunto la fine di una funzione senza incontrare l'istruzione RETURN che specifica il valore da ritornare al chiamante. Ovviamente, questo errore non si può verificare nelle procedure.

 
<= KeywordsSintassi =>

Umberto Salsi

Contatto
Mappa
Home / Indice sezione