Click here to Skip to main content
15,905,073 members
Home / Discussions / C#
   

C#

 
AnswerRe: Getting an Exception : (HRESULT: 0x800A140C ) while trying to close Word 2k10 Document Pin
Kushagra Tiwari22-Nov-10 0:17
Kushagra Tiwari22-Nov-10 0:17 
GeneralRe: Getting an Exception : (HRESULT: 0x800A140C ) while trying to close Word 2k10 Document Pin
GuzmanJ2-Mar-11 10:37
GuzmanJ2-Mar-11 10:37 
AnswerRe: Getting an Exception : (HRESULT: 0x800A140C ) while trying to close Word 2k10 Document Pin
gmr_evgen15-Aug-11 14:08
gmr_evgen15-Aug-11 14:08 
QuestionMoved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
#realJSOP19-Nov-10 1:40
professional#realJSOP19-Nov-10 1:40 
AnswerRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
Luc Pattyn19-Nov-10 1:50
sitebuilderLuc Pattyn19-Nov-10 1:50 
GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
dpminusa20-Nov-10 13:51
dpminusa20-Nov-10 13:51 
GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
dpminusa20-Nov-10 14:54
dpminusa20-Nov-10 14:54 
GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
Luc Pattyn20-Nov-10 16:02
sitebuilderLuc Pattyn20-Nov-10 16:02 
The general rule is: One must solve a problem at the level where one can solve the problem. Here is a fictitious example (a simple web browser), first without any error checking, without try/catch. Assume a URL is entered in the appropriate TextBox and some button gets clicked (or the ENTER key gets hit), causing the Navigate method to be called.
class Program {
    public static Main() {
        Application.Run(new Browser());
    }
}

class Browser : Form {
    public Navigate(string URL) {
        string HTML=GetWebPage(URL);
        WebPage page=DecodeHtml(HTML);
        ShowPage(page);
    }
}

Now assume the HTML is invalid (say a missing </table> tag), so the DecodeHtml method throws an exception, navigate fails, the Exception reaches Main, the app crashes. Good? I don't think so. Now put try/catch in Main. Any better? No, Main cannot solve the problem, all it could do is nicely tell the user "Something went wrong, and I quit (or I restart)", so whatever the user had done till then is lost. Not good.

Now assume Navigate has a separate try/catch around each of its lines; DecodeHtml fails, so page is null, causing ShowPage to either fail or show an empty page. Good? I don't think so, the user expects to see a page, and when some HTML error occurs, he still wants to see as much as possible of that page.

Now have some try/catch inside DecodeHtml(). It could hold a lot of the decoding stuff, and try and guess what was intended, i.e. return a page as well as it can plus signal something isn't quite OK, maybe showing an error message in a status bar. This would be acceptable behavior from the user's point of view. Hence, that is what must be done.

Does this mean, the lowest level must solve all problems? No. It means the lowest level must solve the problems it can deal with well, and it must propagate the ones it cannot adequately handle, to the higher level (the caller).

Another example, not quite about exceptions, more about user errors: a compiler will easily detect your mistakes in the source files you feed it. Do you want the compiler to crash at the first error? You don't. Do you want the compiler to continue compiling and report more errors? You do (up to a point, getting more than 100 error messages isn't really helpful). So the compiler should not give up, it should try and continue to satisfy the user's expectations. And yes, that may take a lot of code.

In the end it is a balance between the user's comfort and the programmer's effort. And IMO the user is much more important than the programmer, as he is the paying customer; and there could be a lot of them.

Smile | :)
Luc Pattyn [Forum Guidelines] [Why QA sucks] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, and improve readability.


GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
dpminusa20-Nov-10 20:06
dpminusa20-Nov-10 20:06 
AnswerRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
Pete O'Hanlon19-Nov-10 2:34
mvePete O'Hanlon19-Nov-10 2:34 
GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
dpminusa20-Nov-10 14:14
dpminusa20-Nov-10 14:14 
AnswerRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
_Erik_19-Nov-10 3:46
_Erik_19-Nov-10 3:46 
GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
dpminusa20-Nov-10 14:18
dpminusa20-Nov-10 14:18 
GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
_Erik_20-Nov-10 16:01
_Erik_20-Nov-10 16:01 
GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
dpminusa20-Nov-10 20:01
dpminusa20-Nov-10 20:01 
GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
_Erik_20-Nov-10 23:21
_Erik_20-Nov-10 23:21 
GeneralRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
dpminusa21-Nov-10 4:46
dpminusa21-Nov-10 4:46 
AnswerRe: Moved from Q/A (originally posted by dmpinusa): Centralizing Exception Handling Code Pin
Rhys Gravell21-Nov-10 23:57
professionalRhys Gravell21-Nov-10 23:57 
Questiondatetimepicker with multiple selected dates Pin
ajithnamboodiri18-Nov-10 19:58
ajithnamboodiri18-Nov-10 19:58 
AnswerRe: datetimepicker with multiple selected dates Pin
Mycroft Holmes18-Nov-10 20:46
professionalMycroft Holmes18-Nov-10 20:46 
AnswerRe: datetimepicker with multiple selected dates Pin
RobCroll19-Nov-10 0:55
RobCroll19-Nov-10 0:55 
AnswerRe: datetimepicker with multiple selected dates Pin
Gregory Gadow19-Nov-10 9:40
Gregory Gadow19-Nov-10 9:40 
AnswerRe: datetimepicker with multiple selected dates Pin
thatraja20-Nov-10 2:13
professionalthatraja20-Nov-10 2:13 
QuestionPrint a data using GDI object in windows form Pin
ragupathi.p18-Nov-10 17:55
ragupathi.p18-Nov-10 17:55 
AnswerRe: Print a data using GDI object in windows form Pin
Luc Pattyn18-Nov-10 18:26
sitebuilderLuc Pattyn18-Nov-10 18:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.