CS 112 - Week 13 Lecture 2 - 2022-11-17 TODAY WE WILL * announcements * continue intro to exception handling in C++ * [maybe an stringstream demo...?] * prep for next class * Should be working on Homework 9, at-least-1st-attempts-deadline is 11:59 pm Friday, Nov 18 * WATCH for class emails as parts of Homework 10 become available, with a deadline of DEC 2 ===== MORE on exception-handling in C++ ===== * Let's talk a bit more about the catch block. * people DO sometimes call the thing written in parentheses after catch in a catch block the catch parameter... * you can CHOOSE how the catch parameter is passed...! * can catch by VALUE (that's the approach in exc1.cpp) catch (out_of_range e) * can catch by REFERENCE catch (out_of_range& e) # might change e! catch (const out_of_range& e) # won't change e! * catch by POINTER (!!) catch (out_of_range *e) * ISO CPP's advice: * if there's not a good reason not to, catch by reference (!!) * (because catch by value makes a copy -- using the copy constructor -- COULD be situations where the copy would act differently than the "original") * only use catch by poointer in very special circumstances (like when using a library where it is the custom, looking at you, Microsoft Foundation Class Library...) ===== quick examples of stringstreams! ===== * #include <sstream> // to use stringstreams! * if you want to use std out formatting tools to build a string (rather than write to the screen or to a file), use an ostringstream ostringstream output_ss; output_ss << "(" << x << ", " << y << ")"; // and method str lets you get a string from // an ostringstream return output_ss.str(); * demo'd in revised to_string method in Point.cpp * and demo'd using an istringstream to more conveniently read from a file in iss.cpp