Question: Which is better approach and why.

Answer: 
Your application should, as one of its primary goals, NEVER lose user's data. One way to accomplish that is saving regularly the work the user has done **without user intervention**. 

That's the paradigm most people are used to in real life. When people write in a notebook they don't expect the paper to ask "Do you want me to actually commit these changes to paper?", they expect the changes to be permanent unless they choose explicitly to throw them away. 

So, I wouldn't even ask that question, implement a robust undo functionality, and merely ask (maybe at the beginning of the work session) for a new save file name if it's a new work, saving continuously and upon exit.

These ideas come from the very enlightening [Why Software Sucks... And What You Can Do About It](http://www.rollthunder.com/Books/WhySoftwareSucks/why_software_sucks.htm).
I hate being asked if I want to save, personally. If I needed to I probably did. If I've forgotten then most programs I use have an auto-save feature.

The idea about seeking out UI guidelines is good, but I agree with the person who suggested minimal user intervention. His analogy about writing on paper hit the nail on the head. Many programs come with some sort of version control these days.