Fix UnboundLocalError on invalid quickmarks.

This also improves FuzzyUrlError messages.
This commit is contained in:
Florian Bruhin 2015-03-29 21:20:42 +02:00
parent b2427701fa
commit 5233e7fac8
2 changed files with 24 additions and 7 deletions

View File

@ -147,8 +147,11 @@ class QuickmarkManager(QObject):
urlstr = self.marks[name] urlstr = self.marks[name]
try: try:
url = urlutils.fuzzy_url(urlstr, do_search=False) url = urlutils.fuzzy_url(urlstr, do_search=False)
except urlutils.FuzzyUrlError: except urlutils.FuzzyUrlError as e:
raise cmdexc.CommandError( if e.url is None or not e.url.errorString():
"Invalid URL for quickmark {}: {} ({})".format( errstr = ''
name, urlstr, url.errorString())) else:
errstr = ' ({})'.format(e.url.errorString())
raise cmdexc.CommandError("Invalid URL for quickmark {}: "
"{}{}".format(name, urlstr, errstr))
return url return url

View File

@ -183,7 +183,7 @@ def fuzzy_url(urlstr, cwd=None, relative=False, do_search=True):
qtutils.ensure_valid(url) qtutils.ensure_valid(url)
else: else:
if not url.isValid(): if not url.isValid():
raise FuzzyUrlError("Invalid URL '{}'!".format(urlstr)) raise FuzzyUrlError("Invalid URL '{}'!".format(urlstr), url)
return url return url
@ -357,6 +357,20 @@ def host_tuple(url):
class FuzzyUrlError(Exception): class FuzzyUrlError(Exception):
"""Exception raised by fuzzy_url on problems.""" """Exception raised by fuzzy_url on problems.
pass Attributes:
url: The QUrl which caused the error.
"""
def __init__(self, msg, url=None):
super().__init__(msg)
if url is not None:
assert not url.isValid()
self.url = url
def __str__(self):
if self.url is None or not self.url.errorString():
return str(super())
else:
return '{}: {}'.format(str(super()), self.url.errorString())