Git and Team Services made easy with Visual Studio 2017

Git distributed version control system can be used to manage code in the Visual Studio Team Services repository. Visual Studio 2017 IDE provides easy access to Git and VSTS.

Here are some important information to begin with.

If you come across error 400 when you are cloning, first of all check whether you have spaces in the git repository URL and replace the spaces with %20 as suggested here.


My Notes on Exception Handling

First, I want to thank my good friend Chew Min for introducing the book, “C# 6.0 and the .NET 4.6 Framework” by Andrew Troelsen and Philip Japikse to me. It is a very good book which includes basics of C# and .NET framework every developer should know. I am going to share my notes on the chapter, “Understanding Structured Exception Handling”.

  • There are mainly 3 types of errors which can be included in a program
    • Bugs – errors made by the programmer
    • User Errors – Errors in user inputs
    • Exceptions – Runtime errors
  • Catch all possible exceptions in production level projects
  • You can throw and handle exceptions, when you know about certain possible occurrence of errors. The keywords used for this are try, catch, throw, finally and when (C# 6.0)
  • Exception class implements
    • _Exception – .NET exception to be processed by an unmanaged code base
    • ISerializable – Exception object to be persisted across boundaries
  • Properties in  Exception class
    • Data – IDictionary type, programmer defined info about the exception (key-value pair)
    • HelpLink – Url to a help page or a document
    • InnerException – information about previous exceptions
    • Message – error message
    • Source – gets/sets name of the assembly
    • Stacktrace – sequence of calls triggered exception, this is useful for debugging to dump the error to external log
    • TargetSite – return MethodBase object, describe information about the method that threw the exception (ToString() will give this)
  • Throwing a new exception
    • throw new Exception(“message”);
  • You are not required to handle each and every exception thrown by the program
  • Some ways to deal with an exception
    • Log information to a report or a file
    • write data to the windows event log
    • email a system administrator
    • display problem to an end user
    • dump content to the console window
  • Exceptions from .NET framework or CLR known as System Exceptions
  • Writing a Custom Exception
    • Derives from Exception/ ApplicationException
    • Marked with the [System.Serializable] attribute
    • Defines a default constructor
    • Defines a constructor, sets the inherited Message property
    • Defines a constructor to handle InnerExceptions
    • Defines a constructor to handle the serialization of your type.
  • Catch most specific exceptions first and then catch the generic exceptions
  • Throw in catch to re-throw exceptions(partial handling)
  • Throw exceptions only until the callers who has the ability to handle incoming exceptions gracefully
  • C# 6.0 has when keyword to filter exception logic
    • eg:  catch(Exception ex) when(isItTrue == True) { // do something }