6.9 L'istruzione raise

raise_stmt  ::=  "raise" [expression ["," expression ["," expression]]]
Potete scaricare il file originale (in Inglese) come testo.

Se non sono presenti espressioni, raise risolleva l'ultima espressione che era stata attivata nel corrente ambito di visibilità. Se nessuna eccezione è attiva nel corrente ambito di visibilità, viene sollevata un'eccezione che indica questo errore.

Altrimenti, raise valuta le espressioni per prendere tre oggetti, usando None come valore per le espressioni omesse. I primi due oggetti vengono usati per determinare il tipo ed il valore dell'eccezione.

Se il terzo oggetto è un'istanza, il tipo dell'eccezione è la classe dell'istanza, l'istanza stessa è il valore ed il secondo oggetto deve essere None.

Se il primo oggetto è una classe, questa diventa il tipo di eccezione. Il secondo oggetto viene usato per determinare il valore dell'eccezione: se è un'istanza della classe, l'istanza diventa il valore dell'eccezione. Se il secondo oggetto è una tupla, viene usato come lista di argomenti per il costruttore di classe; se è None, viene usato un argomento lista vuoto ed ogni altro oggetto viene trattato come singolo argomento per il costruttore. L'istanza così creata dalla chiamata del costruttore viene usata come valore dell'eccezione.

Se è presente un terzo oggetto e non None, deve essere un oggetto traceback (vedere la sezione 3.2) e viene sostituito al posto della posizione corrente come il posto dov'è avvenuta l'eccezione. Se il terzo oggetto è presente e non è None, viene sollevata un'eccezione TypeError. Le tre forme di espressione di raise sono utili per risollevare nuovamente un'eccezione in modo trasparente in una clausola except, ma raise senza espressioni dovrebbe essere preferito se l'eccezione che deve essere risollevata era l'eccezione attiva più recente nel corrente ambito di visibilità.

Ulteriori informazioni sulle eccezioni possono essere trovate nella sezione 4.2 e informazioni sulla gestione delle eccezioni si trovano nella sezione 7.4.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.