No, cache has nothing to do with the application crashes. This problem is because some of the data that you're storing inside the cache, is either null of is invalid for your application, as soon as you clear the data the application starts to run again. End user, as you've said, will have to either clear the cache himself, or will have to contact you people for more information on fixing this problem which would cause a lot of time for you people. Exceptions are raised which cause the application to terminate, it can be as simple as NullReferenceException (in .NET) to terminate your exception. It is a good approach, to always write the statements which might throw an exception in a try catch block like this,
try {
} catch (Exception er) {
}
Exception Handling (Wikipedia)[
^]
What you should do, is inside your IDE, set a few breakpoints to the modules (functions) and then run the application in debug mode. Since you're not telling what the error is, means either that you're running the Release version of the application which doesn't tell which exception was raised and just closes the application, or that you've missed adding the exception details.
Breakpoint (Wikipedia)[
^]
You can easily add the breakpoints to your application, and debug it. Upon running, it will let you easily navigate through different processes that take place in your application, and just when it throws exception you can see the values inside the application's cache and which expression or statement threw it. Knowing that line and the value, you can easily understand what the problem is, if you don't know, then you can try to Google for it. Chances are that searching for the Exception name would give you an answer. Upon doing this, you will be able to fix this problem and set a valid conditional block to check against the values, which are valid and if they're not you can simply ignore them or delete them.