Line 16: |
Line 16: |
| ===Method and Implementations=== | | ===Method and Implementations=== |
| Whenever any uncaught exception is raised, the interpreter calls the sys.excepthook(type,value,traceback). After some discussions at #python, we learnt how this functionality could be used in this scenario and prepared a git diff of the file src/jarabe/journal/journalactivity.py | | Whenever any uncaught exception is raised, the interpreter calls the sys.excepthook(type,value,traceback). After some discussions at #python, we learnt how this functionality could be used in this scenario and prepared a git diff of the file src/jarabe/journal/journalactivity.py |
− | The following is the git diff. Please find the explanations as comments
| |
− | diff --git a/journalactivity.py b/journalactivity.py
| |
− | index 44cc018..36a2e2e 100644
| |
− | --- a/journalactivity.py
| |
− | +++ b/journalactivity.py
| |
− | @@ -358,8 +358,20 @@ class JournalActivity(Window):
| |
− | self.show_main_view()
| |
− | self.search_grab_focus()
| |
| | | |
− | ''' Defining an Error Alert function in the Journal Activity Class which displays the message as
| + | ===Code=== |
| | | |
− | Operation could not be performed
| + | The following is the git diff. Please find the explanations as comments - |
− | Please check the logviewer activity for details | |
− | and an OK button
| |
− | '''
| |
| | | |
− |
| + | http://pastebin.com/7mEnHVVN |
− | + def uncaught_exception_alert(self):
| |
− | + alert = ErrorAlert(title="Operation could not be performed", msg="Please check the logviewer activity for details ")
| |
− | + alert.connect('response', self.__alert_response_cb)
| |
− | + self.add_alert(alert)
| |
− | + alert.show()
| |
− | +
| |
− | _journal = None
| |
− |
| |
− | '''
| |
− | Defining a function which logs the unhandled exception as well as calls the Error Alert in the Journal whenever any uncaught exception occurs
| |
− | '''
| |
| | | |
− | +def _alert_excepthook(exc_type, exc_value, traceback):
| |
− | + logging.exception('Unhandled Python exception: %s', repr((exc_type, exc_value, traceback)))
| |
− | + _journal.uncaught_exception_alert()
| |
− | +
| |
− | '''
| |
− | When an exception is raised and uncaught, sys.excepthook is called with three arguments, the exception class, exception instance, and a traceback object.The function _alert_excepthook is called only when an unhandled exception occurs.
| |
− | '''
| |
− |
| |
− | +sys.excepthook = _alert_excepthook
| |
− | +
| |
− | def get_journal():
| |
− | global _journal
| |
− | if _journal is None:
| |
− |
| |
− |
| |
| However, the above code caught the unhandled exceptions for only journal files and displayed an error alert in the journal except for journalactivity.py. I realized that whenever any unhandled exception occurs in the file the ‘Journal’ icon itself disappears and there is no other way to go the Journal. | | However, the above code caught the unhandled exceptions for only journal files and displayed an error alert in the journal except for journalactivity.py. I realized that whenever any unhandled exception occurs in the file the ‘Journal’ icon itself disappears and there is no other way to go the Journal. |
− |
| |
| | | |
| ===Feedback=== | | ===Feedback=== |