C Exception Handling Sample Driver TrashCan yours TrashCan m
C++ Exception Handling
Sample Driver:
TrashCan yours;
 TrashCan mine;
 TrashCan test;
yours.setSize( 10 );
 mine.setSize( 10 );
 test.setSize( 5 );
yours.addItem( );
 mine.addItem( );
 mine.addItem( );
 mine.addItem( );
 mine.addItem( );
 mine.addItem( );
 test.addItem( );
 test.addItem( );
 test.addItem( );
 test.addItem( );
 test.addItem( );
 cout << test << endl;
try {
 // contents will become negative...
 // an exception should get thrown
 test = yours - mine;
 } catch( std::logic_error le ) {
 cout << \"subtraction failed\" << endl;
 }
 /// test should be unchanged
 cout << test << endl;
 
 try {
 // how can you have a negative size
 // an exception should get thrown
 test = TrashCan( -100 );
 } catch( std::logic_error le ) {
 cout << \"constructor failed\" << endl;
 }
/// test should be unchanged
 cout << test << endl;
try {
 // how can you have 5 pieces of
 // trash in a can that
 // can only hold 3??
 // an exception should get thrown
 test.setSize( 3 );
 } catch( std::logic_error le ) {
 cout << \"setSize failed\" << endl;
 }
/// test should be unchanged
 cout << test << endl;
try {
 // how can you have a negative
 // contents value??
 test = TrashCan( 10, -100 );
 } catch( std::logic_error le ) {
 cout << \"constructor failed\" << endl;
 }
Solution
TrashCan yours;
 TrashCan mine;
 TrashCan test;
yours.setSize( 10 );
 mine.setSize( 10 );
 test.setSize( 5 );
yours.addItem( );
 mine.addItem( );
 mine.addItem( );
 mine.addItem( );
 mine.addItem( );
 mine.addItem( );
 test.addItem( );
 test.addItem( );
 test.addItem( );
 test.addItem( );
 test.addItem( );
 cout << test << endl;
try {
 // contents will become negative...
 // an exception should get thrown
 test = yours - mine;
 } catch( std::logic_error le ) {
 cout << \"subtraction failed\" << endl;
 }
 /// test should be unchanged
 cout << test << endl;
 
 try {
 // how can you have a negative size
 // an exception should get thrown
 test = TrashCan( -100 );
 } catch( std::logic_error le ) {
 cout << \"constructor failed\" << endl;
 }
/// test should be unchanged
 cout << test << endl;
try {
 // how can you have 5 pieces of
 // trash in a can that
 // can only hold 3??
 // an exception should get thrown
 test.setSize( 3 );
 } catch( std::logic_error le ) {
 cout << \"setSize failed\" << endl;
 }
/// test should be unchanged
 cout << test << endl;
try {
 // how can you have a negative
 // contents value??
 test = TrashCan( 10, -100 );
 } catch( std::logic_error le ) {
 cout << \"constructor failed\" << endl;
 }



