Question: Which is better approach and why.

Answer: 
Instead of a yes/no question, use a question with custom buttons:

```
The file blah.txt has been modified. Would you like to save or discard it?

+------+    +---------+    +--------+
| Save |    | Discard |    | Cancel |
+------+    +---------+    +--------+

```
Something else I personally think is important is setting focus to whichever button is the equivalent to cancel. I think a lot of users get accustomed to these kind of prompts and just hit enter without even reading what is on the dialog. When they do this I think in most situations it's better to play it safe and cancel than to commit something.