diff --git a/CHANGES b/CHANGES index 5f6bbaf8d..94f7fce05 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,8 @@ Features added Bugs fixed ---------- +* #5320: intersphinx: crashed if invalid url given + Testing -------- diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index 372f7baab..88e9997eb 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -403,14 +403,19 @@ def inspect_main(argv): def warn(self, msg): print(msg, file=sys.stderr) - filename = argv[0] - invdata = fetch_inventory(MockApp(), '', filename) # type: ignore - for key in sorted(invdata or {}): - print(key) - for entry, einfo in sorted(invdata[key].items()): - print('\t%-40s %s%s' % (entry, - einfo[3] != '-' and '%-40s: ' % einfo[3] or '', - einfo[2])) + try: + filename = argv[0] + invdata = fetch_inventory(MockApp(), '', filename) # type: ignore + for key in sorted(invdata or {}): + print(key) + for entry, einfo in sorted(invdata[key].items()): + print('\t%-40s %s%s' % (entry, + einfo[3] != '-' and '%-40s: ' % einfo[3] or '', + einfo[2])) + except ValueError as exc: + print(exc.args[0] % exc.args[1:]) + except Exception as exc: + print('Unknown error: %r' % exc) if __name__ == '__main__':