Hi Dinesh,
It's good to see other people struggling to resolve the same issues in SSIS that I've had.
In relation to your first point - handling the error and continuing execution - I've found that the best solution is to set the system variable [system::propagate] to false in the error handler. To put this into the context of your package, you would create an error handler for the "File Copy" task where you would raise your error message and perform your logging. In the properties of the error handler you set the "propagate" variable to false and you should find that execution will continue. What this does is prevent errors being passed up the container hierarchy. What you can even do is set the property of propagate to true for some errors and false for others giving you more control over what should stop execution and what shouldn't.
Nice article by the way
Regards
Frank