Punkt
import sys
try:
f = open('myfile.txt')
s = f.readline()
except OSError as err:
print("OS error: {0}".format(err))
except ValueError:
print("Die Daten können nicht in eine Ganzzahl konvertiert werden.")
except:
print("unerwarteter Fehler: ", sys.exc_info()[0])
raise #Wirf die Ausnahme erneut, damit der Anrufer sie abfangen kann
Fangen Sie mehrere Arten von Ausnahmen ab
except(RuntimeError, TypeError, NameError):
pass
err .__ str__ ()
referenziert werdenElse-Klausel hinzugefügt
import sys
try:
f = open('myfile.txt')
s = f.readline()
except OSError as err:
print("OS error: {0}".format(err))
except ValueError:
print("Die Daten können nicht in eine Ganzzahl konvertiert werden.")
except:
print("unerwarteter Fehler: ", sys.exc_info()[0])
raise #Wirf die Ausnahme erneut, damit der Anrufer sie abfangen kann
else:
print(s)
f.close()
Punkt
Ausnahmename (Argument) auslösen
erzwingenPunkt
Ausnahmeklasse
class MyError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return repr(self.value)
try:
raise MyError(2*2)
except MyError as e:
print('My exception occurred, value:', e.value)
#Ausgabe
# My exception occurred, value: 4
raise MyError('oops!')
#Ausgabe
# Traceback (most recent call last):
# File ".\exception_class.py", line 12, in <module>
# raise MyError('oops!')
# __main__.MyError: 'oops!'
Punkt
endlich Beispiel
def divide(x, y):
try:
result = x / y
except ZeroDivisionError:
print("Nullteilungsfehler")
else:
print('Antworten: ', result)
finally:
print('in finally')
divide(2, 1)
#Antworten: 2.0
# in finally
divide(2, 0)
#Nullteilungsfehler
# in finally
divide("2", "1")
# in finally
# Traceback (most recent call last):
# File ".\divide.py", line 15, in <module>
# divide("2", "1")
# File ".\divide.py", line 3, in divide
# result = x / y
# TypeError: unsupported operand type(s) for /: 'str' and 'str'
Punkt
with open('workfile', 'r') as f:
read_data = f.read()
print(f.closed)
# True
Recommended Posts