var gets processed in the compile time itself and shows any error during compile time itself.
dynamic gets processed in the runtime only and in case of errors it is hidden until runtime.
dynamic was introduced as part of the DLR (Dynamic Language Runtime) in .Net.
dynamic d = new MyClass();
Eventhough the method "InexistingMethod" is not there - it will get compiled and thrown exception in runtime.