SlideShare a Scribd company logo
1 of 31
Statements
&
Exceptions
Overview
 Introduction to Statements
 Using Selection Statements
 Using Iteration Statements
 Using Jump Statements
 Handling Basic Exceptions
 Raising Exceptions
Introduction to Statements
 Statement Blocks
 Types of Statements
Statement Blocks
 Use braces
As block
delimiters
{
// code
}
{
int i;
...
{
int i;
...
}
}
{
int i;
...
}
...
{
int i;
...
}
 A block and its
parent block
cannot have a
variable with
the same name
 Sibling blocks can
have variables
with
the same name
Types of Statements
Selection Statements
The if and switch statements
Iteration Statements
The while, do, for, and foreach statements
Jump Statements
The goto, break, and continue statements
Using Selection Statements
 The if Statement
 Cascading if Statements
 The switch Statement
 Quiz: Spot the Bugs
The if Statement
 Syntax:
 No implicit conversion from int to bool
int x;
...
if (x) ... // Must be if (x != 0) in C#
if (x = 0) ... // Must be if (x == 0) in C#
if ( Boolean-expression )
first-embedded-statement
else
second-embedded-statement
Cascading if Statements
enum Suit { Clubs, Hearts, Diamonds, Spades }
Suit trumps = Suit.Hearts;
if (trumps == Suit.Clubs)
color = "Black";
else if (trumps == Suit.Hearts)
color = "Red";
else if (trumps == Suit.Diamonds)
color = "Red";
else
color = "Black";
The switch Statement
 Use switch statements for multiple case blocks
 Use break statements to ensure that no fall
through occurs
switch (trumps) {
case Suit.Clubs :
case Suit.Spades :
color = "Black"; break;
case Suit.Hearts :
case Suit.Diamonds :
color = "Red"; break;
default:
color = "ERROR"; break;
}
Quiz: Spot the Bugs
if number % 2 == 0 ...
if (percent < 0) || (percent > 100) ...
if (minute == 60);
minute = 0;
switch (trumps) {
case Suit.Clubs, Suit.Spades :
color = "Black";
case Suit.Hearts, Suit.Diamonds :
color = "Red";
defualt :
...
}
2
3
4
1
Using Iteration Statements
 The while Statement
 The do Statement
 The for Statement
 The foreach Statement
 Quiz: Spot the Bugs
The while Statement
 Execute embedded statements based on Boolean value
 Evaluate Boolean expression at beginning of loop
 Execute embedded statements while Boolean value
Is True
int i = 0;
while (i < 10) {
Console.WriteLine(i);
i++;
}
0 1 2 3 4 5 6 7 8 9
The do Statement
 Execute embedded statements based on Boolean value
 Evaluate Boolean expression at end of loop
 Execute embedded statements while Boolean value
Is True
int i = 0;
do {
Console.WriteLine(i);
i++;
} while (i < 10);
0 1 2 3 4 5 6 7 8 9
The for Statement
 Place update information at the start of the
loop
 Variables in a for block are scoped only within
the block
 A for loop can iterate over several values
for (int i = 0; i < 10; i++) {
Console.WriteLine(i);
}
0 1 2 3 4 5 6 7 8 9
for (int i = 0; i < 10; i++)
Console.WriteLine(i);
Console.WriteLine(i); // Error: i is no longer in scope
for (int i = 0, j = 0; ... ; i++, j++)
The foreach Statement
 Choose the type and name of the iteration variable
 Execute embedded statements for each element of the
collection class
ArrayList numbers = new ArrayList( );
for (int i = 0; i < 10; i++ ) {
numbers.Add(i);
}
foreach (int number in numbers) {
Console.WriteLine(number);
}
0 1 2 3 4 5 6 7 8 9
Quiz: Spot the Bugs
for (int i = 0, i < 10, i++)
Console.WriteLine(i);
int i = 0;
while (i < 10)
Console.WriteLine(i);
for (int i = 0; i >= 10; i++)
Console.WriteLine(i);
do
...
string line = Console.ReadLine( );
guess = int.Parse(line);
while (guess != answer);
2
3
4
1
Using Jump Statements
 The goto Statement
 The break and continue Statements
The goto Statement
 Flow of control transferred to a labeled statement
 Can easily result in obscure “spaghetti” code
if (number % 2 == 0) goto Even;
Console.WriteLine("odd");
goto End;
Even:
Console.WriteLine("even");
End:;
The break and continue Statements
 The break statement jumps out of an iteration
 The continue statement jumps to the next iteration
int i = 0;
while (true) {
Console.WriteLine(i);
i++;
if (i < 10)
continue;
else
break;
}
Handling Basic Exceptions
 Why Use Exceptions?
 Exception Objects
 Using try and catch Blocks
 Multiple catch Blocks
Why Use Exceptions?
 Traditional procedural error handling is cumbersome
int errorCode = 0;
FileInfo source = new FileInfo("code.cs");
if (errorCode == -1) goto Failed;
int length = (int)source.Length;
if (errorCode == -2) goto Failed;
char[] contents = new char[length];
if (errorCode == -3) goto Failed;
// Succeeded ...
Failed: ... Error handling
Core program logic
Exception Objects
Exception
SystemException
OutOfMemoryException
IOException
NullReferenceException
ApplicationException
Using try and catch Blocks
 Object-oriented solution to error handling
 Put the normal code in a try block
 Handle the exceptions in a separate catch block
try {
Console.WriteLine("Enter a number");
int i = int.Parse(Console.ReadLine());
}
catch (OverflowException caught)
{
Console.WriteLine(caught);
}
Error handling
Program logic
Multiple catch Blocks
 Each catch block catches one class of exception
 A try block can have one general catch block
 A try block is not allowed to catch a class that is derived
from a class caught in an earlier catch block
try
{
Console.WriteLine("Enter first number");
int i = int.Parse(Console.ReadLine());
Console.WriteLine("Enter second number");
int j = int.Parse(Console.ReadLine());
int k = i / j;
}
catch (OverflowException caught) {…}
catch (DivideByZeroException caught) {…}
Raising Exceptions
 The throw Statement
 The finally Clause
 Checking for Arithmetic Overflow
 Guidelines for Handling Exceptions
The throw Statement
 Throw an appropriate exception
 Give the exception a meaningful message
throw expression ;
if (minute < 1 || minute >= 60) {
throw new InvalidTimeException(minute +
" is not a valid minute");
// !! Not reached !!
}
The finally Clause
 All of the statements in a finally block are always
executed
Monitor.Enter(x);
try {
...
}
finally {
Monitor.Exit(x);
}
Any catch blocks are optional
Checking for Arithmetic Overflow
 By default, arithmetic overflow is not checked
 A checked statement turns overflow checking on
checked {
int number = int.MaxValue;
Console.WriteLine(++number);
}
unchecked {
int number = int.MaxValue;
Console.WriteLine(++number);
} -2147483648
OverflowException
Exception object is thrown.
WriteLine is not executed.
MaxValue + 1 is negative?
Guidelines for Handling Exceptions
 Throwing
 Avoid exceptions for normal or expected cases
 Never create and throw objects of class Exception
 Include a description string in an Exception object
 Throw objects of the most specific class possible
 Catching
 Arrange catch blocks from specific to general
 Do not let exceptions drop off Main
Custom Exception
 Custom Exception class is derived from System.Exception
or one of the other common base exception classes.
 Provides a type safe mechanism for a developer to detect
an error condition.
 Add situation specific data to an exception.
 No existing exception adequately described my problem.
Review
 Introduction to Statements
 Using Selection Statements
 Using Iteration Statements
 Using Jump Statements
 Handling Basic Exceptions
 Raising Exceptions

More Related Content

What's hot

Exception handling chapter15
Exception handling chapter15Exception handling chapter15
Exception handling chapter15
Kumar
 
Scjp questions
Scjp questionsScjp questions
Scjp questions
roudhran
 
04a intro while
04a intro while04a intro while
04a intro while
hasfaa1017
 
Exception Handling
Exception HandlingException Handling
Exception Handling
backdoor
 
04 control structures 1
04 control structures 104 control structures 1
04 control structures 1
Jomel Penalba
 
Exception handling
Exception handlingException handling
Exception handling
Iblesoft
 
Jumping statements
Jumping statementsJumping statements
Jumping statements
Suneel Dogra
 

What's hot (20)

Loop control statements
Loop control statementsLoop control statements
Loop control statements
 
Decision statements
Decision statementsDecision statements
Decision statements
 
Handling Exceptions In C &amp; C++[Part A]
Handling Exceptions In C &amp; C++[Part A]Handling Exceptions In C &amp; C++[Part A]
Handling Exceptions In C &amp; C++[Part A]
 
Control statements
Control statementsControl statements
Control statements
 
Exception handling chapter15
Exception handling chapter15Exception handling chapter15
Exception handling chapter15
 
Scjp questions
Scjp questionsScjp questions
Scjp questions
 
Control structures in java
Control structures in javaControl structures in java
Control structures in java
 
Operators
OperatorsOperators
Operators
 
04a intro while
04a intro while04a intro while
04a intro while
 
Exception Handling
Exception HandlingException Handling
Exception Handling
 
Program control statements in c#
Program control statements in c#Program control statements in c#
Program control statements in c#
 
04 control structures 1
04 control structures 104 control structures 1
04 control structures 1
 
Exception handling
Exception handlingException handling
Exception handling
 
Exception handling
Exception handlingException handling
Exception handling
 
Exception handling c++
Exception handling c++Exception handling c++
Exception handling c++
 
Exceptions in python
Exceptions in pythonExceptions in python
Exceptions in python
 
Jumping statements
Jumping statementsJumping statements
Jumping statements
 
C++ decision making
C++ decision makingC++ decision making
C++ decision making
 
Python exception handling
Python   exception handlingPython   exception handling
Python exception handling
 
Control and conditional statements
Control and conditional statementsControl and conditional statements
Control and conditional statements
 

Similar to Module 5 : Statements & Exceptions

C Sharp Jn (3)
C Sharp Jn (3)C Sharp Jn (3)
C Sharp Jn (3)
jahanullah
 
Java căn bản - Chapter6
Java căn bản - Chapter6Java căn bản - Chapter6
Java căn bản - Chapter6
Vince Vo
 
45 aop-programming
45 aop-programming45 aop-programming
45 aop-programming
daotuan85
 

Similar to Module 5 : Statements & Exceptions (20)

C Sharp Jn (3)
C Sharp Jn (3)C Sharp Jn (3)
C Sharp Jn (3)
 
Loops
LoopsLoops
Loops
 
Java căn bản - Chapter6
Java căn bản - Chapter6Java căn bản - Chapter6
Java căn bản - Chapter6
 
06 Loops
06 Loops06 Loops
06 Loops
 
Control flow statements in java
Control flow statements in javaControl flow statements in java
Control flow statements in java
 
06.Loops
06.Loops06.Loops
06.Loops
 
Repetition Structure
Repetition StructureRepetition Structure
Repetition Structure
 
Java tut1
Java tut1Java tut1
Java tut1
 
Tutorial java
Tutorial javaTutorial java
Tutorial java
 
Java Tut1
Java Tut1Java Tut1
Java Tut1
 
Java Tutorial
Java TutorialJava Tutorial
Java Tutorial
 
Object oriented programming system with C++
Object oriented programming system with C++Object oriented programming system with C++
Object oriented programming system with C++
 
C# Control Statements, For loop, Do While.ppt
C# Control Statements, For loop, Do While.pptC# Control Statements, For loop, Do While.ppt
C# Control Statements, For loop, Do While.ppt
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Language
 
exceptioninpython.pptx
exceptioninpython.pptxexceptioninpython.pptx
exceptioninpython.pptx
 
Presentation slides: "How to get 100% code coverage"
Presentation slides: "How to get 100% code coverage" Presentation slides: "How to get 100% code coverage"
Presentation slides: "How to get 100% code coverage"
 
C Programming Lesson 3.pdf
C Programming Lesson 3.pdfC Programming Lesson 3.pdf
C Programming Lesson 3.pdf
 
45 aop-programming
45 aop-programming45 aop-programming
45 aop-programming
 
07 flow control
07   flow control07   flow control
07 flow control
 
Decision statements in c laguage
Decision statements in c laguageDecision statements in c laguage
Decision statements in c laguage
 

More from Prem Kumar Badri

More from Prem Kumar Badri (20)

Module 15 attributes
Module 15 attributesModule 15 attributes
Module 15 attributes
 
Module 14 properties and indexers
Module 14 properties and indexersModule 14 properties and indexers
Module 14 properties and indexers
 
Module 12 aggregation, namespaces, and advanced scope
Module 12 aggregation, namespaces, and advanced scopeModule 12 aggregation, namespaces, and advanced scope
Module 12 aggregation, namespaces, and advanced scope
 
Module 13 operators, delegates, and events
Module 13 operators, delegates, and eventsModule 13 operators, delegates, and events
Module 13 operators, delegates, and events
 
Module 11 : Inheritance
Module 11 : InheritanceModule 11 : Inheritance
Module 11 : Inheritance
 
Module 10 : creating and destroying objects
Module 10 : creating and destroying objectsModule 10 : creating and destroying objects
Module 10 : creating and destroying objects
 
Module 9 : using reference type variables
Module 9 : using reference type variablesModule 9 : using reference type variables
Module 9 : using reference type variables
 
Module 8 : Implementing collections and generics
Module 8 : Implementing collections and genericsModule 8 : Implementing collections and generics
Module 8 : Implementing collections and generics
 
Module 7 : Arrays
Module 7 : ArraysModule 7 : Arrays
Module 7 : Arrays
 
Module 6 : Essentials of Object Oriented Programming
Module 6 : Essentials of Object Oriented ProgrammingModule 6 : Essentials of Object Oriented Programming
Module 6 : Essentials of Object Oriented Programming
 
Module 4 : methods & parameters
Module 4 : methods & parametersModule 4 : methods & parameters
Module 4 : methods & parameters
 
Module 3 : using value type variables
Module 3 : using value type variablesModule 3 : using value type variables
Module 3 : using value type variables
 
Module 2: Overview of c#
Module 2:  Overview of c#Module 2:  Overview of c#
Module 2: Overview of c#
 
Module 1 : Overview of the Microsoft .NET Platform
Module 1 : Overview of the Microsoft .NET PlatformModule 1 : Overview of the Microsoft .NET Platform
Module 1 : Overview of the Microsoft .NET Platform
 
C# Non generics collection
C# Non generics collectionC# Non generics collection
C# Non generics collection
 
C# Multi threading
C# Multi threadingC# Multi threading
C# Multi threading
 
C# Method overloading
C# Method overloadingC# Method overloading
C# Method overloading
 
C# Inheritance
C# InheritanceC# Inheritance
C# Inheritance
 
C# Generic collections
C# Generic collectionsC# Generic collections
C# Generic collections
 
C# Global Assembly Cache
C# Global Assembly CacheC# Global Assembly Cache
C# Global Assembly Cache
 

Recently uploaded

The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
ssuserdda66b
 

Recently uploaded (20)

Sociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning ExhibitSociology 101 Demonstration of Learning Exhibit
Sociology 101 Demonstration of Learning Exhibit
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
SOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning PresentationSOC 101 Demonstration of Learning Presentation
SOC 101 Demonstration of Learning Presentation
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Fostering Friendships - Enhancing Social Bonds in the Classroom
Fostering Friendships - Enhancing Social Bonds  in the ClassroomFostering Friendships - Enhancing Social Bonds  in the Classroom
Fostering Friendships - Enhancing Social Bonds in the Classroom
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptxSKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
SKILL OF INTRODUCING THE LESSON MICRO SKILLS.pptx
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 

Module 5 : Statements & Exceptions

  • 2. Overview  Introduction to Statements  Using Selection Statements  Using Iteration Statements  Using Jump Statements  Handling Basic Exceptions  Raising Exceptions
  • 3. Introduction to Statements  Statement Blocks  Types of Statements
  • 4. Statement Blocks  Use braces As block delimiters { // code } { int i; ... { int i; ... } } { int i; ... } ... { int i; ... }  A block and its parent block cannot have a variable with the same name  Sibling blocks can have variables with the same name
  • 5. Types of Statements Selection Statements The if and switch statements Iteration Statements The while, do, for, and foreach statements Jump Statements The goto, break, and continue statements
  • 6. Using Selection Statements  The if Statement  Cascading if Statements  The switch Statement  Quiz: Spot the Bugs
  • 7. The if Statement  Syntax:  No implicit conversion from int to bool int x; ... if (x) ... // Must be if (x != 0) in C# if (x = 0) ... // Must be if (x == 0) in C# if ( Boolean-expression ) first-embedded-statement else second-embedded-statement
  • 8. Cascading if Statements enum Suit { Clubs, Hearts, Diamonds, Spades } Suit trumps = Suit.Hearts; if (trumps == Suit.Clubs) color = "Black"; else if (trumps == Suit.Hearts) color = "Red"; else if (trumps == Suit.Diamonds) color = "Red"; else color = "Black";
  • 9. The switch Statement  Use switch statements for multiple case blocks  Use break statements to ensure that no fall through occurs switch (trumps) { case Suit.Clubs : case Suit.Spades : color = "Black"; break; case Suit.Hearts : case Suit.Diamonds : color = "Red"; break; default: color = "ERROR"; break; }
  • 10. Quiz: Spot the Bugs if number % 2 == 0 ... if (percent < 0) || (percent > 100) ... if (minute == 60); minute = 0; switch (trumps) { case Suit.Clubs, Suit.Spades : color = "Black"; case Suit.Hearts, Suit.Diamonds : color = "Red"; defualt : ... } 2 3 4 1
  • 11. Using Iteration Statements  The while Statement  The do Statement  The for Statement  The foreach Statement  Quiz: Spot the Bugs
  • 12. The while Statement  Execute embedded statements based on Boolean value  Evaluate Boolean expression at beginning of loop  Execute embedded statements while Boolean value Is True int i = 0; while (i < 10) { Console.WriteLine(i); i++; } 0 1 2 3 4 5 6 7 8 9
  • 13. The do Statement  Execute embedded statements based on Boolean value  Evaluate Boolean expression at end of loop  Execute embedded statements while Boolean value Is True int i = 0; do { Console.WriteLine(i); i++; } while (i < 10); 0 1 2 3 4 5 6 7 8 9
  • 14. The for Statement  Place update information at the start of the loop  Variables in a for block are scoped only within the block  A for loop can iterate over several values for (int i = 0; i < 10; i++) { Console.WriteLine(i); } 0 1 2 3 4 5 6 7 8 9 for (int i = 0; i < 10; i++) Console.WriteLine(i); Console.WriteLine(i); // Error: i is no longer in scope for (int i = 0, j = 0; ... ; i++, j++)
  • 15. The foreach Statement  Choose the type and name of the iteration variable  Execute embedded statements for each element of the collection class ArrayList numbers = new ArrayList( ); for (int i = 0; i < 10; i++ ) { numbers.Add(i); } foreach (int number in numbers) { Console.WriteLine(number); } 0 1 2 3 4 5 6 7 8 9
  • 16. Quiz: Spot the Bugs for (int i = 0, i < 10, i++) Console.WriteLine(i); int i = 0; while (i < 10) Console.WriteLine(i); for (int i = 0; i >= 10; i++) Console.WriteLine(i); do ... string line = Console.ReadLine( ); guess = int.Parse(line); while (guess != answer); 2 3 4 1
  • 17. Using Jump Statements  The goto Statement  The break and continue Statements
  • 18. The goto Statement  Flow of control transferred to a labeled statement  Can easily result in obscure “spaghetti” code if (number % 2 == 0) goto Even; Console.WriteLine("odd"); goto End; Even: Console.WriteLine("even"); End:;
  • 19. The break and continue Statements  The break statement jumps out of an iteration  The continue statement jumps to the next iteration int i = 0; while (true) { Console.WriteLine(i); i++; if (i < 10) continue; else break; }
  • 20. Handling Basic Exceptions  Why Use Exceptions?  Exception Objects  Using try and catch Blocks  Multiple catch Blocks
  • 21. Why Use Exceptions?  Traditional procedural error handling is cumbersome int errorCode = 0; FileInfo source = new FileInfo("code.cs"); if (errorCode == -1) goto Failed; int length = (int)source.Length; if (errorCode == -2) goto Failed; char[] contents = new char[length]; if (errorCode == -3) goto Failed; // Succeeded ... Failed: ... Error handling Core program logic
  • 23. Using try and catch Blocks  Object-oriented solution to error handling  Put the normal code in a try block  Handle the exceptions in a separate catch block try { Console.WriteLine("Enter a number"); int i = int.Parse(Console.ReadLine()); } catch (OverflowException caught) { Console.WriteLine(caught); } Error handling Program logic
  • 24. Multiple catch Blocks  Each catch block catches one class of exception  A try block can have one general catch block  A try block is not allowed to catch a class that is derived from a class caught in an earlier catch block try { Console.WriteLine("Enter first number"); int i = int.Parse(Console.ReadLine()); Console.WriteLine("Enter second number"); int j = int.Parse(Console.ReadLine()); int k = i / j; } catch (OverflowException caught) {…} catch (DivideByZeroException caught) {…}
  • 25. Raising Exceptions  The throw Statement  The finally Clause  Checking for Arithmetic Overflow  Guidelines for Handling Exceptions
  • 26. The throw Statement  Throw an appropriate exception  Give the exception a meaningful message throw expression ; if (minute < 1 || minute >= 60) { throw new InvalidTimeException(minute + " is not a valid minute"); // !! Not reached !! }
  • 27. The finally Clause  All of the statements in a finally block are always executed Monitor.Enter(x); try { ... } finally { Monitor.Exit(x); } Any catch blocks are optional
  • 28. Checking for Arithmetic Overflow  By default, arithmetic overflow is not checked  A checked statement turns overflow checking on checked { int number = int.MaxValue; Console.WriteLine(++number); } unchecked { int number = int.MaxValue; Console.WriteLine(++number); } -2147483648 OverflowException Exception object is thrown. WriteLine is not executed. MaxValue + 1 is negative?
  • 29. Guidelines for Handling Exceptions  Throwing  Avoid exceptions for normal or expected cases  Never create and throw objects of class Exception  Include a description string in an Exception object  Throw objects of the most specific class possible  Catching  Arrange catch blocks from specific to general  Do not let exceptions drop off Main
  • 30. Custom Exception  Custom Exception class is derived from System.Exception or one of the other common base exception classes.  Provides a type safe mechanism for a developer to detect an error condition.  Add situation specific data to an exception.  No existing exception adequately described my problem.
  • 31. Review  Introduction to Statements  Using Selection Statements  Using Iteration Statements  Using Jump Statements  Handling Basic Exceptions  Raising Exceptions