alt: improve error messages and sanity checks in alt:// handler
diff --git a/serial/urlhandler/protocol_alt.py b/serial/urlhandler/protocol_alt.py
index 57c1c4e..6c81813 100644
--- a/serial/urlhandler/protocol_alt.py
+++ b/serial/urlhandler/protocol_alt.py
@@ -41,7 +41,12 @@
                 raise ValueError('unknown option: %r' % (option,))
     except ValueError as e:
         raise serial.SerialException('expected a string in the form "alt://port[?option[=value][&option[=value]]]": %s' % e)
-    return (''.join([parts.netloc, parts.path]), getattr(serial, class_name))
+    if not hasattr(serial, class_name):
+        raise ValueError('unknown class: %r' % (class_name,))
+    cls = getattr(serial, class_name)
+    if not issubclass(cls, serial.Serial):
+        raise ValueError('class %r is not an instance of Serial' % (class_name,))
+    return (''.join([parts.netloc, parts.path]), cls)
 
 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 if __name__ == '__main__':