65.9K
CodeProject is changing. Read more.
Home

The Type Caught or Thrown Must be Derived from System.Exception

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0 vote)

Sep 28, 2013

CPOL
viewsIcon

14650

The type caught or thrown must be derived from System.Exception

Today I received a random error, the error message read “The type caught or thrown must be derived from System.Exception”. The reason why this was to me a random error was because I was trying to catch a Microsoft.TeamFoundation.WorkItemTracking.Client.ServerRejectedChangesException exception.

image

To try and see if maybe this was a bug or maybe my PC needed a reboot or something, I started drilling into the definitions of the exception to try and get all the way through to System.Exception.

Basically, this looked like below:

public class ServerRejectedChangesException : ValidationException

into:

public class ValidationException : ClientException

into:

public class ClientException : TeamFoundationServerException

into:

public class TeamFoundationServerException : 
Microsoft.VisualStudio.Services.Common.VssException

At the TeamFoundationServerException class, I noticed that the VssException was not lit up by Visual Studio which to me meant that I didn’t have a reference added to be able to drill into its definition like I was for the previous levels.

I added a reference to Microsoft.VisualStudio.Services.Common and suddenly the error being thrown when trying to build my project went away. Basically, this allowed the IDE to navigate through to System.Exception like below:

public abstract class VssException : ApplicationException

into:

public class ApplicationException : Exception

into:

public class Exception : ISerializable, _Exception

It would be cool if this extra reference was not needed, but I understand why it is Smile.