Click here to Skip to main content
15,922,166 members

Survey Results

How do you return error conditions?   [Edit]

Survey period: 16 Apr 2007 to 22 Apr 2007

If a routine encounters an error do you hope the caller checks, or do you throw an exception to force the point? (inspired by Anna's blog)

Q1. For non-critical errors:

OptionVotes% 
Set a global error flag222.40
Return a reserved value (0 or -1 etc)27830.32
Return an encoded error value (eg HRESULT)14716.03
Throw an exception37340.68
Cover up the mess and don't say anything9710.58

View optional text answers (23 answers)
Q2. For critical errors that leave the app in an undefined state

OptionVotes% 
Set a global error flag444.80
Return a reserved value (0 or -1 etc)566.11
Return an encoded error value (eg HRESULT)626.76
Throw an exception69776.01
Cover up the mess and don't say anything505.45

View optional text answers (26 answers)


 
GeneralRe: ...unless you are using C++ Pin
peterchen16-Apr-07 21:45
peterchen16-Apr-07 21:45 
GeneralRe: ...unless you are using C++ Pin
Nemanja Trifunovic17-Apr-07 2:13
Nemanja Trifunovic17-Apr-07 2:13 
GeneralRe: ...unless you are using C++ Pin
Chris Losinger17-Apr-07 7:07
professionalChris Losinger17-Apr-07 7:07 
GeneralRe: ...unless you are using C++ Pin
Blake Miller17-Apr-07 9:09
Blake Miller17-Apr-07 9:09 
GeneralRe: ...unless you are using C++ Pin
Shog916-Apr-07 15:02
sitebuilderShog916-Apr-07 15:02 
GeneralRe: ...unless you are using C++ Pin
peterchen16-Apr-07 23:36
peterchen16-Apr-07 23:36 
GeneralRe: ...unless you are using C++ Pin
Shog917-Apr-07 5:37
sitebuilderShog917-Apr-07 5:37 
GeneralRe: ...unless you are using C++ Pin
peterchen17-Apr-07 7:32
peterchen17-Apr-07 7:32 
Shog9 wrote:
I have yet to write a copy constructor that throws exceptions


Fair enough - but (;)): That's exactly the problem when you write generic utility templates: you don't know nothing who is going to use your code with what type. That's all no problem if the documentation states "the copy constructor of T may not throw an exception", but frankly, the best documentation to hope for the constructor itself is "creates a copy of rhs".

The main problem with C++ is that it's not easy to "fall back to a stable point", if your heap is corrupted, you are done.


Shog9 wrote:
i never pass heap-allocating objects by value unless (like CString) they have a copy-on-write or ownership transfer

sane

Shog9 wrote:
(like auto_ptr)

insane Poke tongue | ;-P


Anyway, many bad things can be said about threads, and still I wouldn't argue against them being very useful. it's just no beginners material, and the same goes for exceptions.

May peeves are less the complexity itself but thatthey are sold as a panacea, and that local handliing is very verbose (but the Likely<T> stuff by Andrei/Petru look tempting for that)







We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP
My first real C# project | Linkify!|FoldWithUs! | sighist

GeneralRe: ...unless you are using C++ Pin
Shog917-Apr-07 8:08
sitebuilderShog917-Apr-07 8:08 
GeneralRe: Exceptions are good [modified] Pin
User of Users Group17-Apr-07 13:06
User of Users Group17-Apr-07 13:06 
GeneralExceptions are evil Pin
Michael Dunn15-Apr-07 18:30
sitebuilderMichael Dunn15-Apr-07 18:30 
Generallongjmp() all the way! Pin
Shog915-Apr-07 19:12
sitebuilderShog915-Apr-07 19:12 
GeneralRe: longjmp() all the way! Pin
Gary Wheeler16-Apr-07 2:24
Gary Wheeler16-Apr-07 2:24 
GeneralRe: longjmp() all the way! Pin
John R. Shaw16-Apr-07 7:11
John R. Shaw16-Apr-07 7:11 
GeneralRe: longjmp() all the way! Pin
Gevorg17-Apr-07 5:37
Gevorg17-Apr-07 5:37 
GeneralRe: longjmp() all the way! Pin
Shog917-Apr-07 5:52
sitebuilderShog917-Apr-07 5:52 
GeneralRe: Exceptions are evil Pin
Nemanja Trifunovic16-Apr-07 2:01
Nemanja Trifunovic16-Apr-07 2:01 
GeneralEvent log Pin
Nisamudheen15-Apr-07 18:14
Nisamudheen15-Apr-07 18:14 

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.