Session: Fix issue #67 by improving error handling
diff --git a/pv/session.cpp b/pv/session.cpp
index f1a153e..b4ecc6a 100644
--- a/pv/session.cpp
+++ b/pv/session.cpp
@@ -614,6 +614,9 @@
 	} catch (const QString &e) {
 		device_.reset();
 		MainWindow::show_session_error(tr("Failed to open device"), e);
+	} catch (const sigrok::Error &e) {
+		device_.reset();
+		MainWindow::show_session_error(tr("Failed to open device"), QString(e.what()));
 	}
 
 	if (device_) {
@@ -756,8 +759,11 @@
 					file_name.toStdString())));
 	} catch (Error& e) {
 		MainWindow::show_session_error(tr("Failed to load %1").arg(file_name), e.what());
-		set_default_device();
-		main_bar_->update_device_list();
+		return;
+	}
+
+	if (!device_) {
+		MainWindow::show_session_error(errorMessage, "");
 		return;
 	}