<p>I have VB6 application , I want to put some good error handling finction in it which  can tell me what was the error and exact place when it happened , can anyone suggest the good way to do this </p>

First of all, go get
MZTools for Visual Basic 6
, its free and invaluable.  Second add a custom error handler on every function (yes, every function).  The error handler we use looks something like this:
```
```
On Error GoTo {PROCEDURE_NAME}_Error

{PROCEDURE_BODY}

    On Error GoTo 0
    Exit {PROCEDURE_TYPE}

{PROCEDURE_NAME}_Error:

   LogError "Error " & Err.Number & " (" & Err.Description & ") in line " & Erl & _
            ", in procedure {PROCEDURE_NAME} of {MODULE_TYPE} {MODULE_NAME}"
```
```
Then create a LogError function that logs the error to disc.  Next, before you release code add Line Numbers to every function (this is also built into MZTools).  From now on you will know from the Error Logs everything that happens.  If possible, also, upload the error logs and actually examine them live from the field.
This is about the best you can do for unexpected global error handling in VB6 (one of its many defects), and really this should only be used to find unexpected errors.   If you know that if there is the possibility of an error occurring in a certain situation, you should catch that particular error and handle for it.  If you know that an error occurring in a certain section is going to cause instability (File IO, Memory Issues, etc) warn the user and know that you are in an "unknown state" and that "bad things" are probably going happen.  Obviously use friendly terms to keep the user informed, but not frightened.