Handle a missing session folder at some places.

This commit is contained in:
Florian Bruhin 2015-04-13 08:38:12 +02:00
parent d700d18780
commit f85ba8645f
3 changed files with 18 additions and 7 deletions

View File

@ -44,7 +44,7 @@ except ImportError:
import qutebrowser import qutebrowser
import qutebrowser.resources # pylint: disable=unused-import import qutebrowser.resources # pylint: disable=unused-import
from qutebrowser.completion.models import instances as completionmodels from qutebrowser.completion.models import instances as completionmodels
from qutebrowser.commands import cmdutils, runners from qutebrowser.commands import cmdutils, runners, cmdexc
from qutebrowser.config import style, config, websettings, configexc from qutebrowser.config import style, config, websettings, configexc
from qutebrowser.browser import quickmarks, cookies, cache, adblock, history from qutebrowser.browser import quickmarks, cookies, cache, adblock, history
from qutebrowser.browser.network import qutescheme, proxy, networkmanager from qutebrowser.browser.network import qutescheme, proxy, networkmanager
@ -728,7 +728,11 @@ class Application(QApplication):
@cmdutils.register(instance='app') @cmdutils.register(instance='app')
def restart(self): def restart(self):
"""Restart qutebrowser while keeping existing tabs open.""" """Restart qutebrowser while keeping existing tabs open."""
ok = self._do_restart(session='_restart') try:
ok = self._do_restart(session='_restart')
except sessions.SessionError as e:
log.destroy.exception("Failed to save session!")
raise cmdexc.CommandError("Failed to save session: {}!".format(e))
if ok: if ok:
self.shutdown() self.shutdown()

View File

@ -20,7 +20,7 @@
"""Misc. CompletionModels.""" """Misc. CompletionModels."""
from qutebrowser.config import config, configdata from qutebrowser.config import config, configdata
from qutebrowser.utils import objreg from qutebrowser.utils import objreg, log
from qutebrowser.commands import cmdutils from qutebrowser.commands import cmdutils
from qutebrowser.completion.models import base from qutebrowser.completion.models import base
@ -120,6 +120,9 @@ class SessionCompletionModel(base.BaseCompletionModel):
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(parent) super().__init__(parent)
cat = self.new_category("Sessions") cat = self.new_category("Sessions")
for name in objreg.get('session-manager').list_sessions(): try:
if not name.startswith('_'): for name in objreg.get('session-manager').list_sessions():
self.new_item(cat, name) if not name.startswith('_'):
self.new_item(cat, name)
except OSError:
log.completion.exception("Failed to list sessions!")

View File

@ -375,6 +375,10 @@ class SessionManager(QObject):
name)) name))
try: try:
self.delete(name) self.delete(name)
except OSError as e: except SessionNotFoundError as e:
log.misc.exception("Session not found!")
raise cmdexc.CommandError("Session {} not found".format(e))
except (OSError, SessionError) as e:
log.misc.exception("Error while deleting session!")
raise cmdexc.CommandError("Error while deleting session: {}" raise cmdexc.CommandError("Error while deleting session: {}"
.format(e)) .format(e))