Browse Source

Fix incorrect error handler being called.

pull/2783/head
Tully Rankin 6 years ago
parent
commit
825e17f725
  1. 15
      flask/app.py

15
flask/app.py

@ -1270,7 +1270,7 @@ class Flask(_PackageBoundObject):
@staticmethod @staticmethod
def _get_exc_class_and_code(exc_class_or_code): def _get_exc_class_and_code(exc_class_or_code):
"""Ensure that we register only exceptions as handler keys""" """Ensure that we register only exceptions as handler keys"""
if isinstance(exc_class_or_code, integer_types): if issubclass(type(exc_class_or_code), integer_types):
exc_class = default_exceptions[exc_class_or_code] exc_class = default_exceptions[exc_class_or_code]
else: else:
exc_class = exc_class_or_code exc_class = exc_class_or_code
@ -1334,12 +1334,13 @@ class Flask(_PackageBoundObject):
:type code_or_exception: int|T<=Exception :type code_or_exception: int|T<=Exception
:type f: callable :type f: callable
""" """
if not issubclass(code_or_exception, (HTTPException, Exception)): if type(code_or_exception) is not int:
raise ValueError( if not issubclass(code_or_exception, (Exception)):
'Tried to register a handler for an exception instance {0!r}.' raise ValueError(
' Handlers can only be registered for exception classes or' 'Tried to register a handler for an exception instance {0!r}.'
' HTTP error codes.'.format(code_or_exception) ' Handlers can only be registered for exception classes or'
) ' HTTP error codes.'.format(code_or_exception)
)
try: try:
exc_class, code = self._get_exc_class_and_code(code_or_exception) exc_class, code = self._get_exc_class_and_code(code_or_exception)

Loading…
Cancel
Save