Hi, I took a course in JAVA and learned about exceptions...I'm not sure how to throw and catch in C++. Can I get some help please???

Recommended Answers

All 4 Replies

Since I know little about it, I'll point you here.

One of expecption handlings greatest claims to fame is ability to unroll the stack. Lets suppose you have subroutines "A", "B", "C". Your main code establishes a try block, where in it you call "A" and then "A" calls "B" and "B" calls "C". In "C" there is an error and you throw and expection and it will revert right back to the catch statement in your main module re-establishing the stack as if it had returned normally to that point

Somewhat similiar to the way ON ERROR GOSUB works in VB

So what I try to do is in all my subs and fuctions just throw exceptions and implement appropriate try blocks in the main body of program.

http://relisoft.com has some pretty good tutorials on this already incorportated into full functioning programs.

>> I took a course in JAVA and learned about exceptions...I'm not sure how to throw and catch in C++.

the fundamental difference is the use of the 'resource acquisition is initialization' technique in resource management. the c++ philosophy is
a. error handling code must be clearly seperate from normal code
b. you should not have to write error handling code (read no finally scattered all around the place to clean up when exceptions are thrown) except at the place where you attempt to handle the error.
c. the possibility of an error is not deemed to be an error. (exceptions are not checked at compile-time; if exception specifications are not violated at runtime there is no error).
d. the exception mechanism (as the name suggests) is designed to handle exceptional situations; (for example, when you iterate over a sequence, there is nothing exceptional about reaching its end (i would say that never being able to reach the end would be exceptional).
e. exceptions are expensive at runtime (stack unwind is required), but should cause minimum overhead if no exceptional situation occurs. exceptions are the exception rather than the rule.

so your java experience might in some ways be a disadvantage; you should be willing to unlearn a few things.

here are a few links which deal with the conceptual (rather than syntactic) differences between java and c++ exceptions.
http://www.hackcraft.net/raii/
http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization
http://www.informit.com/articles/article.aspx?p=30642&seqNum=8&rl=1
http://www.artima.com/intv/modern3.html
http://www.research.att.com/~bs/3rd_safe.pdf
the last link (appendix E) is about exception safety in the c++ standard library; if you are starting out on c++, read section E.6 'implications for library users'.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.