Planning your error strategy

You are designing a new application and you want to implement a proper errorhandling strategy. You are discussing the topic with some colleagues, and one of them says that you should use regular error codes to signal errors because that’s faster and your company has used it in the past. You are also having a discussion about when to create a custom exception and when to use the built-in .NET Framework exceptions.

Explain to your colleague the advantages of Exceptions compared to error codes.
When should you create a custom exception?