SlideShare a Scribd company logo
1 of 57
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Exception Handling and References in C++
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Going to Delhi by Train
 Imagine that I am going to Delhi by train today night
 Train is by 9:30 pm from Central station
 Approximately it takes 1:15 to reach station from VIT
 When shall I leave?
 I will plan to leave atleast by 7 pm
 Why?
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Going to Delhi by Train
 The right travel time cannot be predicted.
 There may be a delay in getting bus, traffic jam, tyre
puncture, I fall down....
 These are exceptions
 I handle the exceptions by starting early to station
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Exception
 Unexpected situation may occur while using a software
 Must be taken care during development of it
 For example, if you are writing a function that retrieves a
Web page, several things could go wrong. The Internet
host that contains the page might be down, the page
might come back blank, or the connection could be lost.
 In many programming languages, you would
handle this situation by returning a special value from
the function, such as the NULL pointer.
 Exceptions provide a much better mechanism for dealing
with problems.
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Estimate Voltage Problem
 Design and implement a model of an ideal transformer.
If you have a single iron core with wire1 coiled around
the core N1 times and wire2 wound around the core
N2 times, and if wire1 is attached to a source of
alternating current, then the voltage in wire1 (the input
voltage V1) is related to the voltage in wire2 (the
output voltage V2) as
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Problem
 Given ‘n’ values of V2, N1 and N2 compute V1 which is
given by V2*N1/N2 . If the value of V1 is less than 230
print “less” and print “more” otherwise.
 What happens if N2 is zero?
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Program terminates unexpectedly
Serious problem in case of real time systems
Therac 25
Radiation therapy machine produced by Atomic
Energy of Canada Limited (AECL) in 1982 after the
Therac-6 and Therac-20 units
A real time system
Used for giving radiation therapy to cancer patients
was written in assembly language PDP 11
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Why??
Failed to handle unexpected situation
Was designed with a perfect environment in mind
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Integer Overflow
The bug that caused the second overdose at the
Yakima Valley Memorial Hospital was a result of
integer overflow
During the setup phase of the treatment, the
program used a counter to indicate whether the
inputted parameters matched the prescribed
treatment.
If the parameters matched, the value of the counter
was set to zero, and the treatment could proceed.
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Integer Overflow
Otherwise, the counter was incremented.
The problem was that the counter was stored as an 8-
bit integer, so it could hold a maximum value of 255.
If the counter incremented again, it would wrap around
back to zero.
If the operator attempted to start the treatment at the
precise time when the counter wrapped around to zero,
then they could start treatment with the incorrect
prescription
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Navy Smart Ship dead in the water
USS Yorktown (DDG-48/CG-48) was a
Ticonderoga-class cruiser in the United States
Navy from 1984 to 2004
In 1998, Yorktown was dead in the water for
about two hours and 45 minutes, fleet officials
said, and did not have to be towed in.
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Why?
Because its computers were unable to divide by
the number zero
Failed to handle unexpected situation
Why Exception?
Compute the expression a/(b-c) repeatedly, for n times
Algorithm:
Step1: Get the input for number of times the operation has to be repeated , say n
Step2: Repeat until n less than zero
Step2: Get the input for a, b and c
Step3: Check for b and c unequality
Step4: if b and c are unequal , perform the operation a/(b-c),
Step5: else throw exception saying divide by zero and continue for next iteration
WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
Exception Handling
 Exception: An unwanted unexpected event that disturbs normal
flow of the program is called exception.
 Example:
SleepingException
TyrePunchuredException
FileNotFoundException ...etc
 It is highly recommended to handle exceptions. The main
objective of exception handling is graceful (normal) termination of
the program.
These type of situation can be handled by Exception handling
mechanism available in C++.
void operation(double a, double b,double c) {
try {
if(b==c) throw b; // check for divide-by-zero
cout << "Result: " << a/(b-c) << endl; }
catch (double b) {
cout << "Can't divide by zero.n";}
}
int main() {
double i, j,k;
do {
cout << "Enter numerator (0 to stop): ";
cin >> i;
cout << "Enter denominator1: ";
cin >> j;
cout << "Enter denominator2: ";
cin >> k;
operation(i, j,k);
} while(i != 0);
return 0;
}
Enter numerator (0 to stop): 18
Enter denominator1: 6
Enter denominator2: 2
Result: 4.5
Enter numerator (0 to stop): 18
Enter denominator1: 6
Enter denominator2: 6
Can't divide by zero.
Enter numerator (0 to stop): 27
Enter denominator1: 9
Enter denominator2: 6
Result: 9
Enter numerator (0 to stop): 27
Enter denominator1: 9
Enter denominator2: 9
Can't divide by zero.
Enter numerator (0 to stop): 14
Enter denominator1: 6
Enter denominator2: 4
Result: 7
Enter numerator (0 to stop): 0
Enter denominator1: 4
Exception handling Mechanism
The purpose of the exception handling is to provide a mechanism to
detect and report
the ‘exceptional circumstances’in the program so that appropriate
action can be taken.
This process involves separate error handling code that performs the
following tasks
 Identify the problem (Hit the exception)
 Report that an error has occurred (Throw the exception)
 Receive the error information (Catch the exception)
 Take corrective actions (Handles the exception)
19
20
Exception Handling Model
try block
Detects and throws
an exception
catch block
Catches and handles
an exception
Exception object
 The keyword try is used to preface a block of statements
surrounded by braces which may be generating
exceptions; this block of statements is known as try
block
 When an exception is detected, it is thrown using a throw
statement in the try block
 A catch block is defined by the keyword catch catches
the exception thrown by the throw statement in the try
block and handles it appropriately
21
Exception Handling: Format
try
{
……
throw exception; // block of statements
// which detects and
// throws an exception
}
catch (type arg) // catches exception
{
……….
………. // block of statements that
………. // handles the exception
}
22
26
Throw exception Invoke function
Throw point
Function that causes
an exception
try block
invokes a function that
contains an exception
catch block
Catches and handles
an exception
 Most often, exceptions are thrown by functions that are invoked
from within the try block
 The point at which the throw block is executed is called the throw
point
 Once an exception is thrown to the catch block, control cannot
return to the throw point
27
Invoking Function that Generates Exception
void divide (int x, int y, intz){
cout << " inside the function n “;
if (( x-y) !=0)
{ int R = z/(x–y) ;
cout<< " Result = “ << R << “n”; }
else // there is a problem
{throw (x-y);// throw point }
}
void main() {
try {cout<< ” inside the try block n”;
divide(20,10,30); // Invoke divide
divide(30,30,60); // Invoke divide
}
catch (int i) {
cout<< “ caught the exception n “;
}
}
inside the try block
inside the function
Result = -3
Caught the exception
28
29
Catching Mechanism
A catch block looks like a function definition and is of the form:
catch (type arg)
{
// statements for managing exceptions
}
The type indicates the type of exception that catch block handles.
The parameter arg is an optional parameter name; the catch
statement catches an exception whose type matches with the type
of catch argument,when it is caught, the code in the catch block is
executed.
30
Multiple Catch Statements
 It is possible that a program segment has more than one condition to throw an
exception; such cases, you can associate more than one catch statements with a try as
shown in the following code
try
{ // try block }
catch (type1 arg)
{ // catch block1 }
catch (type2 arg)
{ // catch block2 }
……….
……….
catch (typeN arg)
{ // catch blockN }
31
void Xhandler(int test) {
try{
if(test) throw test;
else throw "Value is zero";
}
catch(int i) {
cout << "Caught Exception #: " << i;
}
catch(const char *str) {
cout << "Caught a string: ";
cout << str << 'n';
}
}
void main() {
cout << "Startn";
Xhandler(1); Xhandler(2);
Xhandler(0); Xhandler(3);
cout << “End"; }
Start
Caught Exception #:1
Caught Exception #:2
Caught a string: Value is zero
Caught Exception #:3
End
32
Catch All Exceptions
 In some situations, you may not be able to anticipate all possible type of
exceptions and defining unique catch handlers to catch the appropriate one
 In such situations you can force a catch statement to catch all exceptions
instead of a certain type alone
For example:
catch ( …)
{
// statements for processing all exceptions
}
33
void test ( int x) {
try
{ if(x==0) throw x; //int
if(x==-1) throw ‘x’; //char
if(x==1) throw 1.0; //float
}
catch(….) // catch all
{
cout<<” caught an exception”;
}
}
void main() {
cout << “ Test for common catch “;
test(-1); test(0); test(1);
}
Independent Reference
Scenario: Assume you are Mr. Edwin and also you have a pet name called Buddy in your
home. When Buddy is ill, shall Edwin can take a pill to get cured. This is practically
possible, even though the names are different, body is single. A body can be
referred by different name.
Similarly in computer memory, basically memory locations are referred by identifier or
variable name. You can create any number of reference to a memory cell. This is called
independent reference or reference alias. All the reference variable you had binded point the
same memory only
34
Reference Variable
 A reference is an alias; when you create a reference, you initialize it with the name of
another object, the target
 From that moment on, the reference acts as an alternative name for the target, and
anything you do to the reference is really done to the target
int &rSomeRef = someInt;
"rSomeRef is a reference to an integer that is initialized to refer to someInt
// Demonstrating the use of References
int main() {
int intOne;
int &rSomeRef = intOne;
intOne = 5;
cout << "intOne: " << intOne << endl;
cout << "rSomeRef: " << rSomeRef << endl;
rSomeRef = 7;
cout << "intOne: " << intOne << endl;
cout << "rSomeRef: " << rSomeRef << endl;
}
Output: intOne: 5
rSomeRef: 5
intOne: 7
rSomeRef: 7
Test of understanding on References
int main() {
int x = 7;
int & ref = x;
ref = 8;
int y = 10;
ref = y;
cout << “x = “ << x;
cout << “ y = “ << y;
cout << “ ref = “ << ref << endl;
}
The question is, what will this print? Stop
reading here until you know the answer.
Did you answer this way:
x = 8, y = 10, ref = 10
If so, you made the most common mistake
(don’t feel bad, it’s a trick question). Refer
again to this statement:
ref = y;
This statement did not point ref to y
instead, it was exactly as if I had written
this
x = y;
Thus, here is the correct answer:
x = 10, y = 10, ref = 10
37
 One or more reference can be binded to the same variable, all reference variable refers
the same target
int main() {
int a=10;
int &a1ref=a;
int &a2ref=a;
int &a3ref=a;
int &a4ref=a;
int &a5ref=a;
a1ref++; a2ref++; a3ref++; a4ref++; a5ref++;
cout<<" a is "<<a; }
a is 15
38
Value Reference and Address
Pass by Reference
Pass by Reference
Pass by Reference
Pass by Reference
Two Dimensional More examples
Two Dimensional More examples
Passing Function Argument by Reference
Problem:
Assume that in a banking operation scenario, you are making a fund transfer operation
from one account to the other of the same bank and branch. Here after transaction, the
balance amount field in both the objects should be updated, i.e. debit should happen in
source account and credit should happen in destination account which in turn update the
balance amount field of both the objects.
To enable these type of operation successfully, both the objects involved in the above
operation should be send by reference, failing which inconsistent data may prevail in the
operating objects
Passing Function Argument by Reference
 Functions has two limitations: Arguments are passed by value, and the return statement
can return only one value
 Passing values to a function by reference can overcome both of these limitations.
 In C++, passing by reference is accomplished in two ways: using pointers and using
references.
 The syntax is different, but the net effect is the same.
 Rather than a copy being created within the scope of the function, the actual original
object is passed into the function.
 Passing Function Argument by Reference is also called as returning multiple arguments
References are less powerful than pointers
1) Once a reference is created, it cannot be later made to
reference another object; it cannot be reseated. This is
often done with pointers.
2) References cannot be NULL. Pointers are often made
NULL to indicate that they are not pointing to any valid
thing.
3) A reference must be initialized when declared. There is
no such restriction with pointers
References are safer and easier to use
1) Safer: Since references must be initialized, wild
references like wild pointers are unlikely to exist. It is
still possible to have references that don’t refer to a
valid location
2) Easier to use: References don’t need dereferencing
operator to access the value. They can be used like
normal variables.
‘&’ operator is needed only at the time of declaration.
Also, members of an object reference can be accessed
with dot operator (‘.’), unlike pointers where arrow
operator (->) is needed to access members.
Function Return by Reference
Scenario : Assume a function works on multiple values
of a data set ( say array), it bound to return the address of
one of the elements of an array after the operation.
Example: say a function findmax() is expected to return
the address of bigger element in a data set- array to the
calling point.
Get a warning that reference of a local variable
cannot be returned
WINSEM2016-17_CSE1002_LO_1336_24-JAN-2017_RM003_session 10.pptx

More Related Content

Similar to WINSEM2016-17_CSE1002_LO_1336_24-JAN-2017_RM003_session 10.pptx

Optimization in the world of 64-bit errors
Optimization  in the world of 64-bit errorsOptimization  in the world of 64-bit errors
Optimization in the world of 64-bit errorsPVS-Studio
 
Exception handling c++
Exception handling c++Exception handling c++
Exception handling c++Jayant Dalvi
 
2014-06-26 - A guide to undefined behavior in c and c++
2014-06-26 - A guide to undefined behavior in c and c++2014-06-26 - A guide to undefined behavior in c and c++
2014-06-26 - A guide to undefined behavior in c and c++Chen-Han Hsiao
 
Checking the code of Valgrind dynamic analyzer by a static analyzer
Checking the code of Valgrind dynamic analyzer by a static analyzerChecking the code of Valgrind dynamic analyzer by a static analyzer
Checking the code of Valgrind dynamic analyzer by a static analyzerPVS-Studio
 
Analyzing the Blender project with PVS-Studio
Analyzing the Blender project with PVS-StudioAnalyzing the Blender project with PVS-Studio
Analyzing the Blender project with PVS-StudioPVS-Studio
 
Exception handling and templates
Exception handling and templatesException handling and templates
Exception handling and templatesfarhan amjad
 
4. programing 101
4. programing 1014. programing 101
4. programing 101IEEE MIU SB
 
C decision making and looping.
C decision making and looping.C decision making and looping.
C decision making and looping.Haard Shah
 
Mid term sem 2 1415 sol
Mid term sem 2 1415 solMid term sem 2 1415 sol
Mid term sem 2 1415 solIIUM
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAAiman Hud
 
How to avoid bugs using modern C++
How to avoid bugs using modern C++How to avoid bugs using modern C++
How to avoid bugs using modern C++PVS-Studio
 
JP ASSIGNMENT SERIES PPT.ppt
JP ASSIGNMENT SERIES PPT.pptJP ASSIGNMENT SERIES PPT.ppt
JP ASSIGNMENT SERIES PPT.pptJAYAPRIYAR7
 
Tesseract. Recognizing Errors in Recognition Software
Tesseract. Recognizing Errors in Recognition SoftwareTesseract. Recognizing Errors in Recognition Software
Tesseract. Recognizing Errors in Recognition SoftwareAndrey Karpov
 
Java căn bản - Chapter6
Java căn bản - Chapter6Java căn bản - Chapter6
Java căn bản - Chapter6Vince Vo
 
Analysis of Microsoft Code Contracts
Analysis of Microsoft Code ContractsAnalysis of Microsoft Code Contracts
Analysis of Microsoft Code ContractsPVS-Studio
 

Similar to WINSEM2016-17_CSE1002_LO_1336_24-JAN-2017_RM003_session 10.pptx (20)

Optimization in the world of 64-bit errors
Optimization  in the world of 64-bit errorsOptimization  in the world of 64-bit errors
Optimization in the world of 64-bit errors
 
Exception handling c++
Exception handling c++Exception handling c++
Exception handling c++
 
2014-06-26 - A guide to undefined behavior in c and c++
2014-06-26 - A guide to undefined behavior in c and c++2014-06-26 - A guide to undefined behavior in c and c++
2014-06-26 - A guide to undefined behavior in c and c++
 
Checking the code of Valgrind dynamic analyzer by a static analyzer
Checking the code of Valgrind dynamic analyzer by a static analyzerChecking the code of Valgrind dynamic analyzer by a static analyzer
Checking the code of Valgrind dynamic analyzer by a static analyzer
 
Analyzing the Blender project with PVS-Studio
Analyzing the Blender project with PVS-StudioAnalyzing the Blender project with PVS-Studio
Analyzing the Blender project with PVS-Studio
 
Exception handling and templates
Exception handling and templatesException handling and templates
Exception handling and templates
 
Savitch ch 16
Savitch ch 16Savitch ch 16
Savitch ch 16
 
4. programing 101
4. programing 1014. programing 101
4. programing 101
 
F6dc1 session6 c++
F6dc1 session6 c++F6dc1 session6 c++
F6dc1 session6 c++
 
C decision making and looping.
C decision making and looping.C decision making and looping.
C decision making and looping.
 
Mid term sem 2 1415 sol
Mid term sem 2 1415 solMid term sem 2 1415 sol
Mid term sem 2 1415 sol
 
POLITEKNIK MALAYSIA
POLITEKNIK MALAYSIAPOLITEKNIK MALAYSIA
POLITEKNIK MALAYSIA
 
Exception handling
Exception handlingException handling
Exception handling
 
How to avoid bugs using modern C++
How to avoid bugs using modern C++How to avoid bugs using modern C++
How to avoid bugs using modern C++
 
Savitch Ch 16
Savitch Ch 16Savitch Ch 16
Savitch Ch 16
 
JP ASSIGNMENT SERIES PPT.ppt
JP ASSIGNMENT SERIES PPT.pptJP ASSIGNMENT SERIES PPT.ppt
JP ASSIGNMENT SERIES PPT.ppt
 
Tesseract. Recognizing Errors in Recognition Software
Tesseract. Recognizing Errors in Recognition SoftwareTesseract. Recognizing Errors in Recognition Software
Tesseract. Recognizing Errors in Recognition Software
 
Exception handling
Exception handlingException handling
Exception handling
 
Java căn bản - Chapter6
Java căn bản - Chapter6Java căn bản - Chapter6
Java căn bản - Chapter6
 
Analysis of Microsoft Code Contracts
Analysis of Microsoft Code ContractsAnalysis of Microsoft Code Contracts
Analysis of Microsoft Code Contracts
 

Recently uploaded

(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)Suman Mia
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSRajkumarAkumalla
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...Call girls in Ahmedabad High profile
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingrknatarajan
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVRajaP95
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Call Girls in Nagpur High Profile
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...ranjana rawat
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 

Recently uploaded (20)

(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)Software Development Life Cycle By  Team Orange (Dept. of Pharmacy)
Software Development Life Cycle By Team Orange (Dept. of Pharmacy)
 
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICSHARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
HARDNESS, FRACTURE TOUGHNESS AND STRENGTH OF CERAMICS
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
High Profile Call Girls Dahisar Arpita 9907093804 Independent Escort Service ...
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
 
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IVHARMONY IN THE NATURE AND EXISTENCE - Unit-IV
HARMONY IN THE NATURE AND EXISTENCE - Unit-IV
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...Top Rated  Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
Top Rated Pune Call Girls Budhwar Peth ⟟ 6297143586 ⟟ Call Me For Genuine Se...
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
(TARA) Talegaon Dabhade Call Girls Just Call 7001035870 [ Cash on Delivery ] ...
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 

WINSEM2016-17_CSE1002_LO_1336_24-JAN-2017_RM003_session 10.pptx

  • 1. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Exception Handling and References in C++
  • 2. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Going to Delhi by Train  Imagine that I am going to Delhi by train today night  Train is by 9:30 pm from Central station  Approximately it takes 1:15 to reach station from VIT  When shall I leave?  I will plan to leave atleast by 7 pm  Why?
  • 3. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Going to Delhi by Train  The right travel time cannot be predicted.  There may be a delay in getting bus, traffic jam, tyre puncture, I fall down....  These are exceptions  I handle the exceptions by starting early to station
  • 4. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Exception  Unexpected situation may occur while using a software  Must be taken care during development of it  For example, if you are writing a function that retrieves a Web page, several things could go wrong. The Internet host that contains the page might be down, the page might come back blank, or the connection could be lost.  In many programming languages, you would handle this situation by returning a special value from the function, such as the NULL pointer.  Exceptions provide a much better mechanism for dealing with problems.
  • 5. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Estimate Voltage Problem  Design and implement a model of an ideal transformer. If you have a single iron core with wire1 coiled around the core N1 times and wire2 wound around the core N2 times, and if wire1 is attached to a source of alternating current, then the voltage in wire1 (the input voltage V1) is related to the voltage in wire2 (the output voltage V2) as
  • 6. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Problem  Given ‘n’ values of V2, N1 and N2 compute V1 which is given by V2*N1/N2 . If the value of V1 is less than 230 print “less” and print “more” otherwise.  What happens if N2 is zero?
  • 7. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
  • 8. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Program terminates unexpectedly Serious problem in case of real time systems
  • 9. Therac 25 Radiation therapy machine produced by Atomic Energy of Canada Limited (AECL) in 1982 after the Therac-6 and Therac-20 units A real time system Used for giving radiation therapy to cancer patients was written in assembly language PDP 11
  • 10. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming
  • 11. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Why?? Failed to handle unexpected situation Was designed with a perfect environment in mind
  • 12. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Integer Overflow The bug that caused the second overdose at the Yakima Valley Memorial Hospital was a result of integer overflow During the setup phase of the treatment, the program used a counter to indicate whether the inputted parameters matched the prescribed treatment. If the parameters matched, the value of the counter was set to zero, and the treatment could proceed.
  • 13. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Integer Overflow Otherwise, the counter was incremented. The problem was that the counter was stored as an 8- bit integer, so it could hold a maximum value of 255. If the counter incremented again, it would wrap around back to zero. If the operator attempted to start the treatment at the precise time when the counter wrapped around to zero, then they could start treatment with the incorrect prescription
  • 14. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Navy Smart Ship dead in the water USS Yorktown (DDG-48/CG-48) was a Ticonderoga-class cruiser in the United States Navy from 1984 to 2004 In 1998, Yorktown was dead in the water for about two hours and 45 minutes, fleet officials said, and did not have to be towed in.
  • 15. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Why? Because its computers were unable to divide by the number zero Failed to handle unexpected situation
  • 16. Why Exception? Compute the expression a/(b-c) repeatedly, for n times Algorithm: Step1: Get the input for number of times the operation has to be repeated , say n Step2: Repeat until n less than zero Step2: Get the input for a, b and c Step3: Check for b and c unequality Step4: if b and c are unequal , perform the operation a/(b-c), Step5: else throw exception saying divide by zero and continue for next iteration
  • 17. WIN 2015-16, CSE1002 Problem Solving with Object Oriented Programming Exception Handling  Exception: An unwanted unexpected event that disturbs normal flow of the program is called exception.  Example: SleepingException TyrePunchuredException FileNotFoundException ...etc  It is highly recommended to handle exceptions. The main objective of exception handling is graceful (normal) termination of the program. These type of situation can be handled by Exception handling mechanism available in C++.
  • 18. void operation(double a, double b,double c) { try { if(b==c) throw b; // check for divide-by-zero cout << "Result: " << a/(b-c) << endl; } catch (double b) { cout << "Can't divide by zero.n";} } int main() { double i, j,k; do { cout << "Enter numerator (0 to stop): "; cin >> i; cout << "Enter denominator1: "; cin >> j; cout << "Enter denominator2: "; cin >> k; operation(i, j,k); } while(i != 0); return 0; } Enter numerator (0 to stop): 18 Enter denominator1: 6 Enter denominator2: 2 Result: 4.5 Enter numerator (0 to stop): 18 Enter denominator1: 6 Enter denominator2: 6 Can't divide by zero. Enter numerator (0 to stop): 27 Enter denominator1: 9 Enter denominator2: 6 Result: 9 Enter numerator (0 to stop): 27 Enter denominator1: 9 Enter denominator2: 9 Can't divide by zero. Enter numerator (0 to stop): 14 Enter denominator1: 6 Enter denominator2: 4 Result: 7 Enter numerator (0 to stop): 0 Enter denominator1: 4
  • 19. Exception handling Mechanism The purpose of the exception handling is to provide a mechanism to detect and report the ‘exceptional circumstances’in the program so that appropriate action can be taken. This process involves separate error handling code that performs the following tasks  Identify the problem (Hit the exception)  Report that an error has occurred (Throw the exception)  Receive the error information (Catch the exception)  Take corrective actions (Handles the exception) 19
  • 20. 20 Exception Handling Model try block Detects and throws an exception catch block Catches and handles an exception Exception object
  • 21.  The keyword try is used to preface a block of statements surrounded by braces which may be generating exceptions; this block of statements is known as try block  When an exception is detected, it is thrown using a throw statement in the try block  A catch block is defined by the keyword catch catches the exception thrown by the throw statement in the try block and handles it appropriately 21
  • 22. Exception Handling: Format try { …… throw exception; // block of statements // which detects and // throws an exception } catch (type arg) // catches exception { ………. ………. // block of statements that ………. // handles the exception } 22
  • 23.
  • 24.
  • 25.
  • 26. 26 Throw exception Invoke function Throw point Function that causes an exception try block invokes a function that contains an exception catch block Catches and handles an exception
  • 27.  Most often, exceptions are thrown by functions that are invoked from within the try block  The point at which the throw block is executed is called the throw point  Once an exception is thrown to the catch block, control cannot return to the throw point 27
  • 28. Invoking Function that Generates Exception void divide (int x, int y, intz){ cout << " inside the function n “; if (( x-y) !=0) { int R = z/(x–y) ; cout<< " Result = “ << R << “n”; } else // there is a problem {throw (x-y);// throw point } } void main() { try {cout<< ” inside the try block n”; divide(20,10,30); // Invoke divide divide(30,30,60); // Invoke divide } catch (int i) { cout<< “ caught the exception n “; } } inside the try block inside the function Result = -3 Caught the exception 28
  • 29. 29 Catching Mechanism A catch block looks like a function definition and is of the form: catch (type arg) { // statements for managing exceptions } The type indicates the type of exception that catch block handles. The parameter arg is an optional parameter name; the catch statement catches an exception whose type matches with the type of catch argument,when it is caught, the code in the catch block is executed.
  • 30. 30 Multiple Catch Statements  It is possible that a program segment has more than one condition to throw an exception; such cases, you can associate more than one catch statements with a try as shown in the following code try { // try block } catch (type1 arg) { // catch block1 } catch (type2 arg) { // catch block2 } ………. ………. catch (typeN arg) { // catch blockN }
  • 31. 31 void Xhandler(int test) { try{ if(test) throw test; else throw "Value is zero"; } catch(int i) { cout << "Caught Exception #: " << i; } catch(const char *str) { cout << "Caught a string: "; cout << str << 'n'; } } void main() { cout << "Startn"; Xhandler(1); Xhandler(2); Xhandler(0); Xhandler(3); cout << “End"; } Start Caught Exception #:1 Caught Exception #:2 Caught a string: Value is zero Caught Exception #:3 End
  • 32. 32 Catch All Exceptions  In some situations, you may not be able to anticipate all possible type of exceptions and defining unique catch handlers to catch the appropriate one  In such situations you can force a catch statement to catch all exceptions instead of a certain type alone For example: catch ( …) { // statements for processing all exceptions }
  • 33. 33 void test ( int x) { try { if(x==0) throw x; //int if(x==-1) throw ‘x’; //char if(x==1) throw 1.0; //float } catch(….) // catch all { cout<<” caught an exception”; } } void main() { cout << “ Test for common catch “; test(-1); test(0); test(1); }
  • 34. Independent Reference Scenario: Assume you are Mr. Edwin and also you have a pet name called Buddy in your home. When Buddy is ill, shall Edwin can take a pill to get cured. This is practically possible, even though the names are different, body is single. A body can be referred by different name. Similarly in computer memory, basically memory locations are referred by identifier or variable name. You can create any number of reference to a memory cell. This is called independent reference or reference alias. All the reference variable you had binded point the same memory only 34
  • 35. Reference Variable  A reference is an alias; when you create a reference, you initialize it with the name of another object, the target  From that moment on, the reference acts as an alternative name for the target, and anything you do to the reference is really done to the target int &rSomeRef = someInt; "rSomeRef is a reference to an integer that is initialized to refer to someInt
  • 36. // Demonstrating the use of References int main() { int intOne; int &rSomeRef = intOne; intOne = 5; cout << "intOne: " << intOne << endl; cout << "rSomeRef: " << rSomeRef << endl; rSomeRef = 7; cout << "intOne: " << intOne << endl; cout << "rSomeRef: " << rSomeRef << endl; } Output: intOne: 5 rSomeRef: 5 intOne: 7 rSomeRef: 7
  • 37. Test of understanding on References int main() { int x = 7; int & ref = x; ref = 8; int y = 10; ref = y; cout << “x = “ << x; cout << “ y = “ << y; cout << “ ref = “ << ref << endl; } The question is, what will this print? Stop reading here until you know the answer. Did you answer this way: x = 8, y = 10, ref = 10 If so, you made the most common mistake (don’t feel bad, it’s a trick question). Refer again to this statement: ref = y; This statement did not point ref to y instead, it was exactly as if I had written this x = y; Thus, here is the correct answer: x = 10, y = 10, ref = 10 37
  • 38.  One or more reference can be binded to the same variable, all reference variable refers the same target int main() { int a=10; int &a1ref=a; int &a2ref=a; int &a3ref=a; int &a4ref=a; int &a5ref=a; a1ref++; a2ref++; a3ref++; a4ref++; a5ref++; cout<<" a is "<<a; } a is 15 38
  • 46.
  • 47.
  • 48. Passing Function Argument by Reference Problem: Assume that in a banking operation scenario, you are making a fund transfer operation from one account to the other of the same bank and branch. Here after transaction, the balance amount field in both the objects should be updated, i.e. debit should happen in source account and credit should happen in destination account which in turn update the balance amount field of both the objects. To enable these type of operation successfully, both the objects involved in the above operation should be send by reference, failing which inconsistent data may prevail in the operating objects
  • 49. Passing Function Argument by Reference  Functions has two limitations: Arguments are passed by value, and the return statement can return only one value  Passing values to a function by reference can overcome both of these limitations.  In C++, passing by reference is accomplished in two ways: using pointers and using references.  The syntax is different, but the net effect is the same.  Rather than a copy being created within the scope of the function, the actual original object is passed into the function.  Passing Function Argument by Reference is also called as returning multiple arguments
  • 50.
  • 51.
  • 52.
  • 53. References are less powerful than pointers 1) Once a reference is created, it cannot be later made to reference another object; it cannot be reseated. This is often done with pointers. 2) References cannot be NULL. Pointers are often made NULL to indicate that they are not pointing to any valid thing. 3) A reference must be initialized when declared. There is no such restriction with pointers
  • 54. References are safer and easier to use 1) Safer: Since references must be initialized, wild references like wild pointers are unlikely to exist. It is still possible to have references that don’t refer to a valid location 2) Easier to use: References don’t need dereferencing operator to access the value. They can be used like normal variables. ‘&’ operator is needed only at the time of declaration. Also, members of an object reference can be accessed with dot operator (‘.’), unlike pointers where arrow operator (->) is needed to access members.
  • 55. Function Return by Reference Scenario : Assume a function works on multiple values of a data set ( say array), it bound to return the address of one of the elements of an array after the operation. Example: say a function findmax() is expected to return the address of bigger element in a data set- array to the calling point.
  • 56. Get a warning that reference of a local variable cannot be returned