diff options
author | hut <hut@lavabit.com> | 2010-05-13 15:06:24 +0200 |
---|---|---|
committer | hut <hut@lavabit.com> | 2010-05-13 15:06:24 +0200 |
commit | 1903181524726664744f807d909ddc7687f8c0cf (patch) | |
tree | c56afce98e1ec26f70cd86f8ee0ed9b1f6c280b3 /ranger | |
parent | ff86460b721ce3398096473b75593a688e2e0f5d (diff) | |
download | ranger-1903181524726664744f807d909ddc7687f8c0cf.tar.gz |
main: more user friendly crash messages
Diffstat (limited to 'ranger')
-rw-r--r-- | ranger/__main__.py | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/ranger/__main__.py b/ranger/__main__.py index 887f8e28..3bb857c3 100644 --- a/ranger/__main__.py +++ b/ranger/__main__.py @@ -154,13 +154,16 @@ def main(): sys.exit(1) # Ensure that a utf8 locale is set. - if getdefaultlocale()[1] not in ('utf8', 'UTF-8'): - for locale in ('en_US.utf8', 'en_US.UTF-8'): - try: setlocale(LC_ALL, locale) - except: pass - else: break + try: + if getdefaultlocale()[1] not in ('utf8', 'UTF-8'): + for locale in ('en_US.utf8', 'en_US.UTF-8'): + try: setlocale(LC_ALL, locale) + except: pass + else: break + else: setlocale(LC_ALL, '') else: setlocale(LC_ALL, '') - else: setlocale(LC_ALL, '') + except: + print("Warning: Unable to set locale. Expect encoding problems.") arg = parse_arguments() ranger.arg = arg @@ -187,6 +190,7 @@ def main(): else: path = '.' + crash_exception = None try: # Initialize objects EnvironmentAware._assign(Environment(path)) @@ -199,12 +203,25 @@ def main(): fm.initialize() fm.ui.initialize() fm.loop() + except Exception as e: + crash_exception = e + if not (arg.debug or arg.clean): + import traceback + dumpname = os.path.join(arg.confdir, 'traceback') + traceback.print_exc(file=open(dumpname, 'w')) finally: # Finish, clean up try: fm.ui.destroy() except (AttributeError, NameError): pass + if crash_exception: + print("Fatal: " + str(crash_exception)) + if arg.debug or arg.clean: + raise crash_exception + else: + print("A traceback has been saved to " + dumpname) + print("Please include it in a bugreport.") if __name__ == '__main__': |