Coverage for cc_modules/cc_exception.py: 80%

1"""

2 camcops_server/cc_modules/cc_exception.py

3

4===============================================================================

5

6 Copyright (C) 2012, University of Cambridge, Department of Psychiatry.

7 Created by Rudolf Cardinal (rnc1001@cam.ac.uk).

8

9 This file is part of CamCOPS.

10

11 CamCOPS is free software: you can redistribute it and/or modify

12 it under the terms of the GNU General Public License as published by

13 the Free Software Foundation, either version 3 of the License, or

14 (at your option) any later version.

15

16 CamCOPS is distributed in the hope that it will be useful,

17 but WITHOUT ANY WARRANTY; without even the implied warranty of

18 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

19 GNU General Public License for more details.

20

21 You should have received a copy of the GNU General Public License

22 along with CamCOPS. If not, see <https://www.gnu.org/licenses/>.

23

24===============================================================================

25

26**Exception-handling functions.**

27

28"""

29

30 import logging

31 from typing import NoReturn

32

33 from cardinal_pythonlib.logs import BraceStyleAdapter

34

35 log = BraceStyleAdapter(logging.getLogger(__name__))

36

37

38# =============================================================================

39# Exception constants

40# =============================================================================

41

42 STR_FORMAT_EXCEPTIONS = (

43 # Exceptions that can be raised by str.format()

44 IndexError, # missing positional parameter: "{}, {}".format(1)

45 KeyError, # missing named parameter: "{x}".format(y=2)

46 ValueError, # e.g. unmatched brace: "{x".format(x=1)

47)

48

49

50# =============================================================================

51# Exceptions

52# =============================================================================

53

54

55 class FhirExportException(Exception):

56 pass

57

58

59# =============================================================================

60# Exception functions

61# =============================================================================

62

63

64 def raise_runtime_error(msg: str) -> NoReturn:

65 """

66 Reports an error message to the Python log and raises a

67 :exc:`RuntimeError`.

68 """

69 log.critical(msg)

70 raise RuntimeError(msg)