compile time error and runtime error difference