try
Anweisungen erstellen keinen neuen Bereich, aber text
wird nicht festgelegt, wenn der Aufruf an url lib.request.urlopen
die Ausnahme auslöst. Sie wollen wahrscheinlich die print(text)
Zeile in einer else
Klausel, so dass es nur ausgeführt wird, wenn es keine Ausnahme gibt.
try:
url = "http://www.google.com"
page = urllib.request.urlopen(url)
text = page.read().decode('utf8')
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your request dude!!")
else:
print(text)
Wenn text
Bedarf später verwendet werden, die Sie wirklich brauchen, um darüber nachzudenken, was seinen Wert sein soll, wenn die Zuordnung zu page
ausfällt und Sie können page.read()
nicht nennen. Sie können ihm vor, einen Anfangswert geben die try
Aussage:
text = 'something'
try:
url = "http://www.google.com"
page = urllib.request.urlopen(url)
text = page.read().decode('utf8')
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your request dude!!")
print(text)
oder in der else
Klausel:
try:
url = "http://www.google.com"
page = urllib.request.urlopen(url)
text = page.read().decode('utf8')
except (ValueError, RuntimeError, TypeError, NameError):
print("Unable to process your request dude!!")
else:
text = 'something'
print(text)
Was wird 'Text' wenn' page = urllib.request.urlopen (url) 'wird eine Ausnahme ausgelöst? Wenn Sie es mit einem bestimmten Wert setzen möchten, können Sie dies im Bereich except oder außerhalb des Blocks "try except" tun. –
'Text' ist das Markup der URL. – x0x
Im 'except' Fall' text' ist * nie zugewiesen *. Sie könnten 'text = None' in diesem Block oder vor dem' try' setzen. Dies ist kein Bereichsproblem. – jonrsharpe