title: Best practices for throwing exceptions that are to be displayed to the user
body: <p>Unexpected exceptions that should terminate execution of the program are simply thrown. They are caught by <code>CurrentDomain_UnhandledException</code> and taken care of there - logged if necessary, and a generic "This app is about to crash and you have nothing to do about it" message displayed to the user.</p>
  
  <p>But what about those exceptions that only need to cancel an operation, while showing the user a more useful message? e.g. informing the user that a file can't be accessed because it's being used by another process. This exception might be deeply nested, and I wouldn't want to check for some flag at every method return. I'd rather have something like this: when the user initiates the most "external" method - say, a button click event handler, the code will include a try-catch block catching all <code>DisplayToUserException</code>'s , and rethrow any other exceptions. So I'll have to create this custom exception class.</p>
  
  <p>But before I go down that path, I'd like to know if that's the standard thing to do, or perhaps there's a better solution for this. Or perhaps a class already built for this. Hence this question.</p>