raise_stmt |
::= | "raise" [expression ["," expression
["," expression]]] |
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.