patch 8.0.0075
Problem:    Using number for exception type lacks type checking.
Solution:   Use an enum.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 9ad7d77..6b4e5fb 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1388,8 +1388,6 @@
 		    break;
 		case ET_INTERRUPT:
 		    break;
-		default:
-		    p = vim_strsave((char_u *)_(e_internal));
 	    }
 
 	    saved_sourcing_name = sourcing_name;
diff --git a/src/ex_eval.c b/src/ex_eval.c
index 7589f8e..17e0fdb 100644
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -16,7 +16,7 @@
 #if defined(FEAT_EVAL) || defined(PROTO)
 
 static void	free_msglist(struct msglist *l);
-static int	throw_exception(void *, int, char_u *);
+static int	throw_exception(void *, except_type_T, char_u *);
 static char_u	*get_end_emsg(struct condstack *cstack);
 
 /*
@@ -422,7 +422,7 @@
     char_u *
 get_exception_string(
     void	*value,
-    int		type,
+    except_type_T type,
     char_u	*cmdname,
     int		*should_free)
 {
@@ -503,7 +503,7 @@
  * error exception.
  */
     static int
-throw_exception(void *value, int type, char_u *cmdname)
+throw_exception(void *value, except_type_T type, char_u *cmdname)
 {
     except_T	*excp;
     int		should_free;
diff --git a/src/proto/ex_eval.pro b/src/proto/ex_eval.pro
index 908b785..9274bce 100644
--- a/src/proto/ex_eval.pro
+++ b/src/proto/ex_eval.pro
@@ -7,7 +7,7 @@
 void free_global_msglist(void);
 void do_errthrow(struct condstack *cstack, char_u *cmdname);
 int do_intthrow(struct condstack *cstack);
-char_u *get_exception_string(void *value, int type, char_u *cmdname, int *should_free);
+char_u *get_exception_string(void *value, except_type_T type, char_u *cmdname, int *should_free);
 void discard_current_exception(void);
 void report_make_pending(int pending, void *value);
 void report_resume_pending(int pending, void *value);
diff --git a/src/structs.h b/src/structs.h
index 7a4d7fb..31accea 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -815,13 +815,23 @@
 };
 
 /*
+ * The exception types.
+ */
+typedef enum
+{
+    ET_USER,		/* exception caused by ":throw" command */
+    ET_ERROR,		/* error exception */
+    ET_INTERRUPT	/* interrupt exception triggered by Ctrl-C */
+} except_type_T;
+
+/*
  * Structure describing an exception.
  * (don't use "struct exception", it's used by the math library).
  */
 typedef struct vim_exception except_T;
 struct vim_exception
 {
-    int			type;		/* exception type */
+    except_type_T	type;		/* exception type */
     char_u		*value;		/* exception value */
     struct msglist	*messages;	/* message(s) causing error exception */
     char_u		*throw_name;	/* name of the throw point */
@@ -830,13 +840,6 @@
 };
 
 /*
- * The exception types.
- */
-#define ET_USER		0	/* exception caused by ":throw" command */
-#define ET_ERROR	1	/* error exception */
-#define ET_INTERRUPT	2	/* interrupt exception triggered by Ctrl-C */
-
-/*
  * Structure to save the error/interrupt/exception state between calls to
  * enter_cleanup() and leave_cleanup().  Must be allocated as an automatic
  * variable by the (common) caller of these functions.
diff --git a/src/version.c b/src/version.c
index 80e30dc..ce19c0c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    75,
+/**/
     74,
 /**/
     73,