Integrierte Ausnahmen in Python
Alle Instanzen in Python müssen Instanzen einer Klasse sein, die von BaseException abgeleitet ist . Zwei Ausnahmeklassen, die nicht über Unterklassen verknüpft sind, sind niemals gleichwertig, selbst wenn sie denselben Namen haben. Die integrierten Ausnahmen können vom Interpreter oder von integrierten Funktionen generiert werden.
In Python gibt es mehrere integrierte Ausnahmen, die ausgelöst werden, wenn Fehler auftreten. Diese integrierten Ausnahmen können mit den integrierten Funktionen local() wie folgt angezeigt werden :
>>> local() ['__ builtins__']
Dies gibt ein Wörterbuch mit integrierten Ausnahmen, Funktionen und Attributen zurück.
Basisklassen
Die folgenden Ausnahmen werden hauptsächlich als Basisklassen für andere Ausnahmen verwendet.
- Ausnahme BaseException
Dies ist die Basisklasse für alle integrierten Ausnahmen. Es soll nicht direkt von benutzerdefinierten Klassen geerbt werden. Für benutzerdefinierte Klassen wird Exception verwendet. Diese Klasse ist für die Erstellung einer Zeichenfolgendarstellung der Ausnahme mithilfe von str() unter Verwendung der übergebenen Argumente verantwortlich. Eine leere Zeichenfolge wird zurückgegeben, wenn keine Argumente vorhanden sind.- args: Die args sind das Tupel von Argumenten, die dem Ausnahmekonstruktor gegeben wurden.
- with_traceback (tb): Diese Methode wird normalerweise bei der Ausnahmebehandlung verwendet. Diese Methode legt tb als neuen Traceback für die Ausnahme fest und gibt das Ausnahmeobjekt zurück.
Code:
Versuchen: ... außer SomeException: tb = sys.exc_info() [2] AndereException auslösen (...). with_traceback (tb)
- Ausnahme Ausnahme
Dies ist die Basisklasse für alle integrierten Ausnahmen, die das System nicht beenden. Alle benutzerdefinierten Ausnahmen sollten ebenfalls von dieser Klasse abgeleitet werden. - Ausnahme ArithmeticError
Diese Klasse ist die Basisklasse für die integrierten Ausnahmen, die für verschiedene arithmetische Fehler ausgelöst werden, z.- Überlauffehler
- ZeroDivisionError
- FloatingPointError
Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codetry
:
a
=
10
/
0
print
(a)
except
ArithmeticError:
print
(
"This statement is raising an arithmetic exception."
)
else
:
print
(
"Success."
)
chevron_rightfilter_noneAusgabe :
Diese Aussage löst eine arithmetische Ausnahme aus.
- Ausnahme BufferError
Diese Ausnahme wird ausgelöst , wenn pufferbezogene Operationen nicht ausgeführt werden können. - Ausnahme LookupError
Dies ist die Basisklasse für die Ausnahmen, die ausgelöst werden, wenn ein Schlüssel oder Index, der für eine Zuordnung oder Sequenz verwendet wird, ungültig ist oder nicht gefunden wird. Die Ausnahmen sind:- KeyError
- IndexError
Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codetry
:
a
=
[
1
,
2
,
3
]
print
(a[
3
])
except
LookupError:
print
(
"Index out of bound error."
)
else
:
print
(
"Success"
)
chevron_rightfilter_noneAusgabe :
Index außerhalb des gebundenen Fehlers.
Konkrete Ausnahmen
Die folgenden Ausnahmen sind die Ausnahmen, die normalerweise ausgelöst werden.
- Ausnahme AssertionError
Ein AssertionError wird ausgelöst, wenn eine assert-Anweisung fehlschlägt.Beispiel:
Assert False, 'Die Assertion ist fehlgeschlagen'
Ausgabe :
Traceback (letzter Anruf zuletzt): Datei "Ausnahmen_AssertionError.py", Zeile 12, in Assert False, 'Die Assertion ist fehlgeschlagen' AssertionError: Die Assertion ist fehlgeschlagen
- Ausnahme AttributeError
Ein AttributeError wird ausgelöst, wenn eine Attributreferenz oder Zuweisung fehlschlägt, z. B. wenn auf ein nicht vorhandenes Attribut verwiesen wird.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codeclass
Attributes(
object
):
pass
object
=
Attributes()
print
(
object
.attribute)
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "d912bae549a2b42953bc62da114ae7a7.py", Zeile 5, in print object.attribute AttributeError: Das Objekt 'Attribute' hat kein Attribut 'Attribut'.
- Ausnahme EOFError
Ein EOFError wird ausgelöst, wenn integrierte Funktionen wie input() eine Dateiendebedingung (EOF) erreichen, ohne Daten zu lesen. Die Dateimethoden wie readline() geben eine leere Zeichenfolge zurück, wenn sie EOF treffen.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codewhile
True
:
data
=
input
(
'Enter name : '
)
print
(
'Hello '
, data)
chevron_rightfilter_noneAusgabe :
Name eingeben: Hallo Aditi Name eingeben: Traceback (letzter Anruf zuletzt): Datei "Ausnahmen_EOFError.py", Zeile 13, in data = raw_input ('Name eingeben:') EOFError: EOF beim Lesen einer Zeile
- Ausnahme FloatingPointError
Ein FloatingPointError wird ausgelöst, wenn eine Gleitkommaoperation fehlschlägt. Diese Ausnahme ist immer definiert, kann jedoch nur ausgelöst werden, wenn Python mit der Option - with-fpectl konfiguriert ist oder das Symbol WANT_SIGFPE_HANDLER in der Datei pyconfig.h definiert ist.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codeimport
math
print
(math.exp(
1000
))
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "", Zeile 1, in FloatingPointError: in math_1
- Ausnahme GeneratorExit
Diese Ausnahme erbt direkt von BaseException anstelle von Exception, da es sich technisch gesehen nicht um einen Fehler handelt. Eine GeneratorExit-Ausnahme wird ausgelöst, wenn ein Generator oder eine Coroutine geschlossen wird.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codedef
my_generator():
try
:
for
i
in
range
(
5
):
print
(
'Yielding'
, i)
yield
i
except
GeneratorExit:
print
(
'Exiting early'
)
g
=
my_generator()
print
(g.
next
())
g.close()
chevron_rightfilter_noneAusgabe :
Ausbeute 0 Früh abreisen
- Ausnahme ImportError
Ein ImportError wird ausgelöst, wenn die import-Anweisung ein Modul nicht laden kann oder wenn die "from-Liste" in from ... import einen Namen hat, der nicht gefunden werden kann.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codeimport
module_does_not_exist
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "Ausnahmen_ImportError_nomodule.py", Zeile 12, in import module_does_not_exist ImportError: Kein Modul mit dem Namen module_does_not_exist vorhanden
Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codefrom
exceptions
import
Userexception
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "Ausnahmen_ImportError_missingname.py", Zeile 12, in aus Ausnahmen importieren Sie Userexception ImportError: Name Userexception kann nicht importiert werden
- Ausnahme ModuleNotFoundError
Dies ist die Unterklasse von ImportError, die beim Import ausgelöst wird, wenn ein Modul nicht gefunden werden konnte. Es wird auch ausgelöst, wenn None in sys.modules gefunden wird. - Ausnahme IndexError
Ein IndexError wird ausgelöst, wenn auf eine Sequenz verwiesen wird, die außerhalb des Bereichs liegt.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codearray
=
[
0
,
1
,
2
]
print
(array[
3
])
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "Ausnahmen_IndexError.py", Zeile 13, in Druckarray [3] IndexError: Listenindex außerhalb des Bereichs
- Ausnahme KeyError
Ein KeyError wird ausgelöst, wenn in der Gruppe der vorhandenen Schlüssel kein Zuordnungsschlüssel gefunden wird.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codearray
=
{
'a'
:
1
,
'b'
:
2
}
print
(array[
'c'
])
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "Ausnahmen_KeyError.py", Zeile 13, in Druckarray ['c'] KeyError: 'c'
- Ausnahme KeyboardInterrupt
Dieser Fehler wird ausgelöst, wenn der Benutzer die Interrupt-Taste wie Control-C oder Delete drückt.
Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codetry
:
print
(
'Press Return or Ctrl-C:'
,)
ignored
=
input
()
except
Exception, err:
print
(
'Caught exception:'
, err)
except
KeyboardInterrupt, err:
print
(
'Caught KeyboardInterrupt'
)
else
:
print
(
'No exception'
)
chevron_rightfilter_noneAusgabe :
Drücken Sie die Eingabetaste oder Strg-C: ^ CCaught KeyboardInterrupt
- Ausnahme MemoryError
Dieser Fehler wird ausgelöst , wenn eine Operation nicht genügend Speicher hat.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codedef
fact(a):
factors
=
[]
for
i
in
range
(
1
, a
+
1
):
if
a
%
i
=
=
0
:
factors.append(i)
return
factors
num
=
600851475143
print
(fact(num))
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "4af5c316c749aff128df20714536b8f3.py", Zeile 9, in Fakt drucken (num) Datei "4af5c316c749aff128df20714536b8f3.py", Zeile 3, in der Tat für i im Bereich (1, a + 1): MemoryError
- Ausnahme NameError
Dieser Fehler wird ausgelöst , wenn kein lokaler oder globaler Name gefunden wird. Zum Beispiel ein unqualifizierter Variablenname.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codedef
func():
print
ans
func()
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "cfba0a5196b05397e0a23b1b5b8c7e19.py", Zeile 4, in func() Datei "cfba0a5196b05397e0a23b1b5b8c7e19.py", Zeile 2, in func print ans NameError: Der globale Name 'ans' ist nicht definiert
- Ausnahme NotImplementedError
Diese Ausnahme wird von RuntimeError abgeleitet. Abstrakte Methoden in benutzerdefinierten Klassen sollten diese Ausnahme auslösen, wenn die abgeleiteten Klassen die Methode überschreiben.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codeclass
BaseClass(
object
):
def
__init__(
self
):
super
(BaseClass,
self
).__init__()
def
do_something(
self
):
raise
NotImplementedError(
self
.__class__.__name__
+
'.do_something'
)
class
SubClass(BaseClass):
def
do_something(
self
):
print
(
self
.__class__.__name__
+
' doing something!'
)
SubClass().do_something()
BaseClass().do_something()
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "b32fc445850cbc23cd2f081ba1c1d60b.py", Zeile 16, in BaseClass(). Do_something() Datei "b32fc445850cbc23cd2f081ba1c1d60b.py", Zeile 7, in do_something Erhöhen Sie NotImplementedError (self .__ class __.__ name__ + '.do_something') NotImplementedError: BaseClass.do_something
- Ausnahme OSError ([arg])
Die OSError-Ausnahme wird ausgelöst, wenn eine Systemfunktion einen systembezogenen Fehler zurückgibt, einschließlich E / A-Fehlern wie "Datei nicht gefunden" oder "Datenträger voll".Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codedef
func():
print
(ans)
func()
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "442eccd7535a2704adbe372cb731fc0f.py", Zeile 4, in print i, os.ttyname (i) OSError: [Errno 25] Unangemessenes ioctl für Gerät
- Ausnahme OverflowError
Der OverflowError wird ausgelöst, wenn das Ergebnis einer arithmetischen Operation außerhalb des Bereichs liegt. Ganzzahlen lösen MemoryError anstelle von OverflowError aus. OverflowError wird manchmal für Ganzzahlen ausgelöst, die außerhalb eines erforderlichen Bereichs liegen. Gleitkommaoperationen werden nicht überprüft, da die Behandlung von Gleitkommaausnahmen in C nicht standardisiert ist.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codeimport
sys
print
(
'Regular integer: (maxint=%s)'
%
sys.maxint)
try
:
i
=
sys.maxint
*
3
print
(
'No overflow for '
,
type
(i),
'i ='
, i)
except
OverflowError, err:
print
(
'Overflowed at '
, i, err)
print
()
print
(
'Long integer:'
)
for
i
in
range
(
0
,
100
,
10
):
print
(
'%2d'
%
i,
2L
*
*
i)
print
()
print
(
'Floating point values:'
)
try
:
f
=
2.0
*
*
i
for
i
in
range
(
100
):
print
(i, f)
f
=
f
*
*
2
except
OverflowError, err:
print
(
'Overflowed after '
, f, err)
chevron_rightfilter_noneAusgabe :
Normale Ganzzahl: (maxint = 9223372036854775807) Kein Überlauf für i = 27670116110564327421 Lange Ganzzahl: 0 1 10 1024 20 1048576 30 1073741824 40 1099511627776 50 1125899906842624 60 1152921504606846976 70 1180591620717411303424 80 1208925819614629174706176 90 1237940039285380274899124224 Gleitkommawerte: 0 1.23794003929e + 27 1 1,53249554087e + 54 2 2.34854258277e + 108 3 5.5156522631e + 216 Nach 5.5156522631e + 216 übergelaufen (34, 'Numerisches Ergebnis außerhalb des Bereichs')
- Ausnahme RecursionError
Der RecursionError wird vom RuntimeError abgeleitet. Diese Ausnahme wird ausgelöst, wenn der Interpreter feststellt, dass die maximale Rekursionstiefe überschritten wird. - Ausnahme ReferenceError
Der ReferenceError wird ausgelöst, wenn ein schwacher Referenz-Proxy verwendet wird, um nach der Garbage Collection auf ein Attribut des Referenten zuzugreifen.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codeimport
gc
import
weakref
class
Foo(
object
):
def
__init__(
self
, name):
self
.name
=
name
def
__del__(
self
):
print
(
'(Deleting %s)'
%
self
)
obj
=
Foo(
'obj'
)
p
=
weakref.proxy(obj)
print
(
'BEFORE:'
, p.name)
obj
=
None
print
(
'AFTER:'
, p.name)
chevron_rightfilter_noneAusgabe :
VORHER: obj (Löschen) NACH DEM: Traceback (letzter Anruf zuletzt): Datei "49d0c29d8fe607b862c02f4e1cb6c756.py", Zeile 17, in print 'AFTER:', p.name ReferenceError: schwach referenziertes Objekt existiert nicht mehr
- Ausnahme RuntimeError
Der RuntimeError wird ausgelöst, wenn keine andere Ausnahme gilt. Es wird eine Zeichenfolge zurückgegeben, die angibt, was genau schief gelaufen ist. - Ausnahme StopIteration
Der StopIteration-Fehler wird durch die integrierte Funktion next() und die __next __() -Methode eines Iterators ausgelöst, um zu signalisieren, dass alle Elemente vom Iterator erzeugt werden.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
CodeArr
=
[
3
,
1
,
2
]
i
=
iter
(Arr)
print
(i)
print
(i.
next
())
print
(i.
next
())
print
(i.
next
())
print
(i.
next
())
chevron_rightfilter_noneAusgabe :
3 1 2 Traceback (letzter Anruf zuletzt): Datei "2136fa9a620e14f8436bb60d5395cc5b.py", Zeile 8, in print i.next() StopIteration
- Ausnahme SyntaxError
Der SyntaxError wird ausgelöst, wenn der Parser auf einen Syntaxfehler stößt. Ein Syntaxfehler kann in einer Importanweisung oder beim Aufrufen der integrierten Funktionen exec() oder eval() oder beim Lesen des ersten Skripts oder der Standardeingabe auftreten.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codetry
:
print
(
eval
(
'geeks for geeks'
))
except
SyntaxError, err:
print
(
'Syntax error %s (%s-%s): %s'
%
\
(err.filename, err.lineno, err.offset, err.text))
print
(err)
chevron_rightfilter_noneAusgabe :
Syntaxfehler (1-9): Geeks für Geeks ungültige Syntax (, Zeile 1)
- Ausnahme SystemError
Der SystemError wird ausgelöst, wenn der Interpreter einen internen Fehler findet. Der zugehörige Wert ist eine Zeichenfolge, die angibt, was schief gelaufen ist. - Ausnahme SystemExit
Der SystemExit wird ausgelöst, wenn die Funktion sys.exit() aufgerufen wird. Ein Aufruf von sys.exit() wird in eine Ausnahme übersetzt, um Bereinigungshandler (schließlich Klauseln von try-Anweisungen) auszuführen und ein Skript zu debuggen, ohne das Risiko einzugehen, die Kontrolle zu verlieren. - Ausnahme TypeError
TypeError wird ausgelöst, wenn eine Operation oder Funktion auf ein Objekt eines unangemessenen Typs angewendet wird. Diese Ausnahme gibt eine Zeichenfolge zurück, die Details zur Typinkongruenz enthält.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codearr
=
(
'tuple'
, )
+
'string'
print
(arr)
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "30238c120c0868eba7e13a06c0b1b1e4.py", Zeile 1, in arr = ('tuple',) + 'string' TypeError: Kann nur Tupel (nicht "str") mit Tupel verketten
- Ausnahme UnboundLocalError
UnboundLocalError ist eine Unterklasse von NameError, die ausgelöst wird, wenn in einer Funktion oder Methode auf eine lokale Variable verwiesen wird, dieser Variablen jedoch kein Wert zugewiesen wurde.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codedef
global_name_error():
print
(unknown_global_name)
def
unbound_local():
local_val
=
local_val
+
1
print
(local_val)
try
:
global_name_error()
except
NameError, err:
print
(
'Global name error:'
, err)
try
:
unbound_local()
except
UnboundLocalError, err:
print
(
'Local name error:'
, err)
chevron_rightfilter_noneAusgabe :
Fehler beim globalen Namen: Der globale Name 'unknown_global_name' ist nicht definiert Lokaler Namensfehler: Lokale Variable 'local_val', auf die vor der Zuweisung verwiesen wird
- Ausnahme UnicodeError
Diese Ausnahme ist eine Unterklasse von ValueError. UnicodeError wird ausgelöst, wenn ein Unicode-bezogener Codierungs- oder Decodierungsfehler auftritt. - Ausnahme ValueError
Ein ValueError wird ausgelöst, wenn eine integrierte Operation oder Funktion ein Argument empfängt, das den richtigen Typ, aber einen ungültigen Wert hat.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codeprint
(
int
(
'a'
))
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "44f00efda935715a3c5468d899080381.py", Zeile 1, in print int ('a') ValueError: ungültiges Literal für int() mit Basis 10: 'a'
- Ausnahme ZeroDivisionError
Ein ZeroDivisionError wird ausgelöst, wenn das zweite Argument einer Divisions- oder Modulo-Operation Null ist. Diese Ausnahme gibt eine Zeichenfolge zurück, die den Typ der Operanden und die Operation angibt.Beispiel:
filter_nonebearbeiten
schließenplay_arrow
Link
Helligkeit_4
Codeprint
(
1
/
0
)
chevron_rightfilter_noneAusgabe :
Traceback (letzter Anruf zuletzt): Datei "c31d9626b41e53d170a78eac7d98cb85.py", Zeile 1, in Druck 1/0 ZeroDivisionError: Ganzzahlige Division oder Modulo durch Null
Dieser Artikel wurde von Aditi Gupta verfasst . Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel mit Contrib.geeksforgeeks.org schreiben oder Ihren Artikel an Contribute@geeksforgeeks.org senden . Sehen Sie sich Ihren Artikel auf der GeeksforGeeks-Hauptseite an und helfen Sie anderen Geeks.
Bitte schreiben Sie Kommentare, wenn Sie etwas Falsches finden oder weitere Informationen zu dem oben diskutierten Thema teilen möchten.