diff --git a/IPython/config/application.py b/IPython/config/application.py index ee5773c..409887a 100644 --- a/IPython/config/application.py +++ b/IPython/config/application.py @@ -31,7 +31,7 @@ from IPython.config.loader import ( ) from IPython.utils.traitlets import ( - Unicode, List, Int, Enum, Dict, Instance + Unicode, List, Int, Enum, Dict, Instance, TraitError ) from IPython.utils.importstring import import_item from IPython.utils.text import indent, wrap_paragraphs, dedent @@ -326,12 +326,12 @@ class Application(SingletonConfigurable): flags=self.flags) try: config = loader.load_config() - except ArgumentError as e: - self.log.fatal(str(e)) + self.update_config(config) + except (TraitError, ArgumentError) as e: self.print_description() self.print_help() + self.log.fatal(str(e)) self.exit(1) - self.update_config(config) # store unparsed args in extra_args self.extra_args = loader.extra_args diff --git a/IPython/core/application.py b/IPython/core/application.py index a473bb8..fe347c0 100644 --- a/IPython/core/application.py +++ b/IPython/core/application.py @@ -277,8 +277,9 @@ class BaseIPythonApplication(Application): def initialize(self, argv=None): - self.init_crash_handler() + # don't hook up crash handler before parsing command-line self.parse_command_line(argv) + self.init_crash_handler() if self.subapp is not None: # stop here if subapp is taking over return