Skip to content

Commit

Permalink
Merge pull request #1635 from janezd/ofwile-catch-errors
Browse files Browse the repository at this point in the history
[FIX] OWFile: Report errors for incorrect file formats instead of crashing
  • Loading branch information
ajdapretnar authored Oct 7, 2016
2 parents f539789 + a6c73ef commit 314ecba
Showing 1 changed file with 27 additions and 20 deletions.
47 changes: 27 additions & 20 deletions Orange/widgets/data/owfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,29 +257,36 @@ def browse_file(self, in_demos=False):

# Open a file, create data from it and send it over the data channel
def load_data(self):
# We need to catch any exception type since anything can happen in
# file readers
# pylint: disable=broad-except
self.editor_model.set_domain(None)
self.reader = self._get_reader()
if not self.reader:
self.data = None
self.send("Data", None)
self.info.setText("No data.")
return
self._update_sheet_combo()

errors = []
with catch_warnings(record=True) as warnings:
try:
data = self.reader.read()
except Exception as ex:
errors.append("An error occurred:")
errors.append(str(ex))
data = None
self.editor_model.reset()
self.warning(warnings[-1].message.args[0] if warnings else '')

if data is None:
error = None
try:
self.reader = self._get_reader()
if self.reader is None:
self.send("Data", None)
self.info.setText("No data.")
self.sheet_box.hide()
return
except Exception as ex:
error = ex

if not error:
self._update_sheet_combo()
with catch_warnings(record=True) as warnings:
try:
data = self.reader.read()
except Exception as ex:
error = ex
self.warning(warnings[-1].message.args[0] if warnings else '')

if error:
self.send("Data", None)
self.info.setText("\n".join(errors))
self.info.setText("An error occurred:\n{}".format(error))
self.editor_model.reset()
self.sheet_box.hide()
return

self.info.setText(self._describe(data))
Expand Down

0 comments on commit 314ecba

Please sign in to comment.