Expand on the shapes hierarchy by adding an Exception class named ShapesException. ShapesException should be made a subclass of class ApplicationException, i.e.
Class ShapesException
Inherits ApplicationException
...
The ShapesException class should include at least the following method:
Public Sub New (message as String)
MyBase.New(message)
End Sub
You should throw a new ShapesException anytime the shapes classes are used incorrectly. For example, if the user of the classes tries to create a circle with a negative radius or if two points in a polygon are the same. e.g.
throw new ShapesException("tried to create a circle with a negative radius")