SlideShare una empresa de Scribd logo
1 de 35
ALGORITHMS AND COMPUTING ( LAB )
END SEMESTER PRESENTATIONS
GROUP C
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Example Program 1 ( DL 1)
     • Causes of Exception Occurrence
     • Example Program 2 ( DL 2)
     • Example Program 3 ( DL 3)
     • Grading
     • Q/A Session
GROUP MEMBERS:
    • Raza Najam
    • Hassaan Idrees
    • Waleed Raza
    • Syed Ahmed Fuad
    • Tanveer Hussain
    • Hassan Qamar Rana
PRESENTATION CONTENTS
           • Team/Topic Introduction
           • Errors & its Types
 Hassaan   • Exception Handling Basics
           • Occurrence & Handling of an Exception ( Flow diagrams )
    Raza   • Methods to handle an Exception
    Fuad   • Example Program 1 ( DL 1)
 Tanveer   • Causes of Exception Occurrence
 Waleed    • Example Program 2 ( DL 2)
    Raza
           • Example Program 3 ( DL 3)
           • Grading
           • Q/A Session
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Example Program 1 ( DL 1)
     • Causes of Exception Occurrence
     • Example Program 2 ( DL 2)
     • Example Program 3 ( DL 3)
     • Grading
     • Q/A Session
ERRORS AND ITS TYPES

• There are three basic types of errors:
         1- Syntax Error
         2- Semantic Errors
         3- Logical Errors
  These errors are detected by the ‘C’ compiler

• There are also a few kinds of errors in ‘C’ those are not detected by the
compiler.
         4- Run Time Errors
         5- Compile Time Errors
  These error are not identified by the compiler and so they are termed
as “EXCEPTIONS”
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Example Program 1 ( DL 1)
     • Causes of Exception Occurrence
     • Example Program 2 ( DL 2)
     • Example Program 3 ( DL 3)
     • Grading
     • Q/A Session
WHAT IS REALLY AN EXCEPTION?
• An exception is an indication of a problem that occurs during a program’s
 execution.
• Exception is a runtime problem that occurs rarely
 handling an exception allows programs to continue executing as if no
 problem had been encountered.
• Helps terminating the program in a controlled manner rather in an
 unpredictable fashion
• Exception handling enables programmers to create applications that can
 resolve (or handle) exceptions.
DIFFERENCES BETWEEN AN ERROR AND AN EXCEPTION
1- Errors occur at compilation time as well as run time while exceptions
mostly occur at run time.
2- Compile time errors are detected by the compiler while exceptions need
to be predicted by the programmer himself
3- Errors occur frequently while exceptions, as the name suggests occur
seldom
4- Error detection and debugging is easier while exception prediction and
its handling is a bit complex procedure
5- Errors can be removed by removing syntax and logical mistakes while
exception handling needs pre-defined or user defined procedures.
BENEFITS:
• Helps improve a program's fault tolerance.
• Enables the programmer to remove error-handling code from the ‘main
line’ of the program’s execution
• Programmers can decide to handle any exceptions they choose – all
exceptions of a certain type or all exceptions of a group of related types
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Example Program 1 ( DL 1)
     • Causes of Exception Occurrence
     • Example Program 2 ( DL 2)
     • Example Program 3 ( DL 3)
     • Grading
     • Q/A Session
EXCEPTION HANDLING IN C
• C does not provide direct support for error/exception handling.
• By convention, the programmer is expected to develop an algorithm for
an error and exception case free program.
• Intelligent visualization skills and prediction of end-user actions on a
particular event prevents errors from occurring in the first place.
• The programmer is expected to test return values from a function.
Exception handling is designed to:
   Process synchronous errors, which occur when a statement executes.
   Common examples of these errors are:
        1. out-of-range array subscripts
        2. arithmetic overflow
        3. division by zero
        4. invalid function parameters
        5. unsuccessful memory allocation, due to lack of memory
Exception handling is not designed to:
   Process errors associated with asynchronous events fro example:
        1. Disk I/O completions
        2. Network message arrivals
        3. Mouse-clicks and keystrokes
   which occur in parallel with, and independent of, the program’s flow
   control.
HOW TO HANDLE AN EXCEPTION:
-   Ignore the exception
                           (Non – Professional )
-   Abort the program
                           ( Even Worst )
-   Set error indicators
                          ( Beginner’s Approach )
-   Issue an error-message and call exit().
                          ( Non – Feasible )
-   Use setjmp() and longjmp()
                          ( Leading to Professional)
THE CLASSIC ‘C’ APPROACH TO EXCEPTION HANDLING.
• Each function returns a value indicating success or failure.
• Every function must check the return code of every function call it
  makes and take care of errors.
• Exceptions make it easy to separate error handling from the rest of
  the code.
• Exceptions make it easy to separate error handling from the rest of
  the code.
• Intermediate functions can completely ignore errors occurring in
  functions they call, if they can't handle them anyway
Main body
{
Any program…

                   Program Pauses and control is
Exception Occurs   shifted to some other function



Further program


End of   program   Now the user defined function
                   decides what to do with that
                   particular exception
}
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Example Program 1 ( DL 1)
     • Causes of Exception Occurrence
     • Example Program 2 ( DL 2)
     • Example Program 3 ( DL 3)
     • Grading
     • Q/A Session
METHODS OF EXCEPTION HANDLING

There are two methods to handle an exception in C.
1- if - else method
2- setjmp() and longjmp() method
METHODS OF EXCEPTION HANDLING

1- if - else method
     • Exception is handled by making decisions via if – else.
     • Occurrence of an exception is checked by the return
     values of a function or by defined parameters.
     • Along with that condition is placed an if – else statement
     that checks and performs the respective action against
     that exception.
METHODS OF EXCEPTION HANDLING
1- if - else method
    main()
    {
    code…
    code…
    EXCEPTION
    if (n==exception condition)
             printf(“Operation cannot be performed”);
             /*here we have to decide whether to exit the program or to
             ignore the exception and run the program anyway */
    else
             continue
    code…
    }
METHODS OF EXCEPTION HANDLING
2- setjmp () and longjmp() method:
    • setjmp() and longjmp() are used to jump away from a
    particular location in a program into another function.
    • The programmer written code, inside that function
    handles the exception
    • To test the occurrence of an exception the setjmp()
    function is called up.
    • setjmp() saves the most recent event of the program
    before that statement in a buffer called jmp_buf.
METHODS OF EXCEPTION HANDLING
2- setjmp () and longjmp() method:
    • As soon as the exception test is complete the setjmp()
    returns a value to the function.
    • If the value returned from the setjmp() to the longjmp()
    is ‘0’ it means that there was an exception condition.
    • Now the program will again start from the same point
    where it stopped (saved in the buffer), until the exception
    condition is removed or repaired.
    • On the other hand programmer can also display error
    messages or other fool-proof techniques.
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Programs Difficulty Level 1
     • Causes of Exception Occurrence
     • Programs Difficulty Level 2
     • Programs Difficulty Level 3
     • Grading
     • Q/A Session
PROGRAM DIFFICULTY LEVEL 1

PROGRAM 1:

      #include <stdio.h>
       void main (void)
      {
               int a , b , c ;
               a=1;
               b=0;
               c=a/b
               printf(“%d”,c);
       }
#include <stdio.h> /* for fprintf and stderr */
#include <stdlib.h> /* for exit */                                                  PROGRAM 2
int main( void )                                                                          DL 1
{
  float dividend = 50;
  float divisor ;
  float quotient;

    printf("Enter a divisor for a dividend of 50nn");
    scanf("%f", &divisor);
    if (divisor == 0)
     {
       /* Example handling of this error. Writing a message to stderr, and
        * exiting with failure.
        */
                 fprintf(stderr, "nnDivision by zero !!! Aborting... ={ nn");
       exit(EXIT_FAILURE); /* indicate failure.*/
     }


    quotient = (dividend/divisor);
    printf("n%.2fnn",quotient);
    exit(EXIT_SUCCESS); /* indicate success.*/
}
#include <setjmp.h>
#include <stdio.h>                                                           PROGRAM 3
#include <stdlib.h>
void main(void)
                                                                                   DL 1
{
  float dividend = 50;
  float divisor ;
  float quotient;
  jmp_buf env;


    printf("Enter a divisor for a dividend of 50nn");
    setjump(env);                                         Stores the scanf() statement in a buffer
    scanf("%f", &divisor);

    if (divisor == 0)                                     Exceptional Case
     longjmp(env,2);                                      Throws back to where we paused

    quotient = (dividend/divisor);
    printf("n%.2fnn",quotient);
    exit(EXIT_SUCCESS); /* indicate success.*/

    return 0;
}
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Programs Difficulty Level 1
     • Causes of Exception Occurrence
     • Programs Difficulty Level 2
     • Programs Difficulty Level 3
     • Grading
     • Q/A Session
CAUSES OF EXCEPTION HANDLING
Exception Class               Cause
ArgumentException             An argument to a method was invalid.
                              A null argument was passed to a method that
ArgumentNullException
                              doesn't accept it.
ArgumentOutOfRangeException   Argument value is out of range.
ArithmeticException           Arithmetic over - or underflow has occurred.
                              Attempt to store the wrong type of object in an
ArrayTypeMismatchException
                              array.
DivideByZeroException         An attempt was made to divide by zero.
FormatException               The format of an argument is wrong.
NotFiniteNumberException      A number is not valid.
NullReferenceException        Attempt to use an unassigned reference.
OutOfMemoryException          Not enough memory to continue execution.
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Programs Difficulty Level 1
     • Causes of Exception Occurrence
     • Programs Difficulty Level 2
     • Programs Difficulty Level 3
     • Grading
     • Q/A Session
#include <stdio.h>      /* fprintf */
#include <errno.h>       /* errno */                                     PROGRAM 1
#include <stdlib.h>
#include <string.h>
                        /* malloc, free, exit */
                        /* strerror */
                                                                               DL 2
extern int errno;
int main( void )
{
  /* pointer to char, requesting dynamic allocation of 2,000,000,000
   * storage elements (declared as an integer constant of type
   * unsigned long int). (If your system has less than 2GB of memory
   * available, then this call to malloc will fail)
   */
  char *ptr = malloc( 2000000000 );

    if ( ptr == NULL )
       puts("malloc failed");
    else
    {
       /* the rest of the code hereafter can assume that 2,000,000,000
        * chars were successfully allocated...
        */
       free( ptr );
    }

    exit(EXIT_SUCCESS); /* exiting program */
}
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Programs Difficulty Level 1
     • Causes of Exception Occurrence
     • Programs Difficulty Level 2
     • Programs Difficulty Level 3
     • Grading
     • Q/A Session
PROGRAM 1
      DL 3
PRESENTATION CONTENTS
     • Team/Topic Introduction
     • Errors & its Types
     • Exception Handling Basics
     • Occurrence & Handling of an Exception ( Flow diagrams )
     • Methods to handle an Exception
     • Programs Difficulty Level 1
     • Causes of Exception Occurrence
     • Programs Difficulty Level 2
     • Programs Difficulty Level 3
     • Grading
     • Q/A Session
GROUP C GRADING
Group leader: Raza Najam

Members Name    Searching Teamwork PPT Skills Willing to C Presentation Skills Total/10
                   10        10       10           10              10              5
Hassaan Idrees          8         8         7             7                   8       3.8
Syed Ahmed Fuad         8         8         5             9                   7       3.7
Tanveer Hussain         8         8         5             6                   5       3.2
Waleed Raza             7         7         5             5                   4       2.8
Hasan Qamar         -         -        -            -               -               -
Q/A

Más contenido relacionado

La actualidad más candente

Inheritance in java
Inheritance in javaInheritance in java
Inheritance in java
Tech_MX
 
Data types in C language
Data types in C languageData types in C language
Data types in C language
kashyap399
 
Templates in C++
Templates in C++Templates in C++
Templates in C++
Tech_MX
 

La actualidad más candente (20)

Strings in C language
Strings in C languageStrings in C language
Strings in C language
 
Structure of a C program
Structure of a C programStructure of a C program
Structure of a C program
 
Loops in c
Loops in cLoops in c
Loops in c
 
Class and Objects in Java
Class and Objects in JavaClass and Objects in Java
Class and Objects in Java
 
Static Data Members and Member Functions
Static Data Members and Member FunctionsStatic Data Members and Member Functions
Static Data Members and Member Functions
 
Function overloading(c++)
Function overloading(c++)Function overloading(c++)
Function overloading(c++)
 
Union in C programming
Union in C programmingUnion in C programming
Union in C programming
 
Storage class in C Language
Storage class in C LanguageStorage class in C Language
Storage class in C Language
 
Fixed point and floating-point numbers
Fixed point and  floating-point numbersFixed point and  floating-point numbers
Fixed point and floating-point numbers
 
Operators
OperatorsOperators
Operators
 
Python Flow Control
Python Flow ControlPython Flow Control
Python Flow Control
 
Inheritance in java
Inheritance in javaInheritance in java
Inheritance in java
 
Exception handling
Exception handlingException handling
Exception handling
 
Dynamic memory Allocation in c language
Dynamic memory Allocation in c languageDynamic memory Allocation in c language
Dynamic memory Allocation in c language
 
File handling in c
File handling in cFile handling in c
File handling in c
 
Functions in C++
Functions in C++Functions in C++
Functions in C++
 
Data types in C language
Data types in C languageData types in C language
Data types in C language
 
Java I/o streams
Java I/o streamsJava I/o streams
Java I/o streams
 
Operator overloading
Operator overloadingOperator overloading
Operator overloading
 
Templates in C++
Templates in C++Templates in C++
Templates in C++
 

Similar a Exception handling in c programming

exceptionvdffhhhccvvvv-handling-in-java.ppt
exceptionvdffhhhccvvvv-handling-in-java.pptexceptionvdffhhhccvvvv-handling-in-java.ppt
exceptionvdffhhhccvvvv-handling-in-java.ppt
yjrtytyuu
 
Week7 exception handling
Week7 exception handlingWeek7 exception handling
Week7 exception handling
Alpesh Oza
 
Week7 exception handling
Week7 exception handlingWeek7 exception handling
Week7 exception handling
Alpesh Oza
 
Introduction to java exceptions
Introduction to java exceptionsIntroduction to java exceptions
Introduction to java exceptions
Sujit Kumar
 

Similar a Exception handling in c programming (20)

Lecture 22 - Error Handling
Lecture 22 - Error HandlingLecture 22 - Error Handling
Lecture 22 - Error Handling
 
Java Exceptions and Exception Handling
 Java  Exceptions and Exception Handling Java  Exceptions and Exception Handling
Java Exceptions and Exception Handling
 
lecture-c-corr-effkkkkkkkkkkkkkp (1).ppt
lecture-c-corr-effkkkkkkkkkkkkkp (1).pptlecture-c-corr-effkkkkkkkkkkkkkp (1).ppt
lecture-c-corr-effkkkkkkkkkkkkkp (1).ppt
 
Exception handling
Exception handlingException handling
Exception handling
 
Exception handling
Exception handlingException handling
Exception handling
 
Programming_Lecture_1.pptx
Programming_Lecture_1.pptxProgramming_Lecture_1.pptx
Programming_Lecture_1.pptx
 
Algorithms and flow charts
Algorithms and flow chartsAlgorithms and flow charts
Algorithms and flow charts
 
Oracle PL/SQL exception handling
Oracle PL/SQL exception handlingOracle PL/SQL exception handling
Oracle PL/SQL exception handling
 
Algorithmic problem sloving
Algorithmic problem slovingAlgorithmic problem sloving
Algorithmic problem sloving
 
Lecture 1 Try Throw Catch.pptx
Lecture 1 Try Throw Catch.pptxLecture 1 Try Throw Catch.pptx
Lecture 1 Try Throw Catch.pptx
 
F6dc1 session6 c++
F6dc1 session6 c++F6dc1 session6 c++
F6dc1 session6 c++
 
exceptionvdffhhhccvvvv-handling-in-java.ppt
exceptionvdffhhhccvvvv-handling-in-java.pptexceptionvdffhhhccvvvv-handling-in-java.ppt
exceptionvdffhhhccvvvv-handling-in-java.ppt
 
Unit 1 program development cycle
Unit 1 program development cycleUnit 1 program development cycle
Unit 1 program development cycle
 
Debbuging
DebbugingDebbuging
Debbuging
 
exception-handling-in-java.ppt
exception-handling-in-java.pptexception-handling-in-java.ppt
exception-handling-in-java.ppt
 
exception-handling-in-java.ppt unit 2
exception-handling-in-java.ppt unit 2exception-handling-in-java.ppt unit 2
exception-handling-in-java.ppt unit 2
 
Week7 exception handling
Week7 exception handlingWeek7 exception handling
Week7 exception handling
 
Week7 exception handling
Week7 exception handlingWeek7 exception handling
Week7 exception handling
 
Week7 exception handling
Week7 exception handlingWeek7 exception handling
Week7 exception handling
 
Introduction to java exceptions
Introduction to java exceptionsIntroduction to java exceptions
Introduction to java exceptions
 

Último

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Exception handling in c programming

  • 1. ALGORITHMS AND COMPUTING ( LAB ) END SEMESTER PRESENTATIONS GROUP C
  • 2. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Example Program 1 ( DL 1) • Causes of Exception Occurrence • Example Program 2 ( DL 2) • Example Program 3 ( DL 3) • Grading • Q/A Session
  • 3. GROUP MEMBERS: • Raza Najam • Hassaan Idrees • Waleed Raza • Syed Ahmed Fuad • Tanveer Hussain • Hassan Qamar Rana
  • 4. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types Hassaan • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) Raza • Methods to handle an Exception Fuad • Example Program 1 ( DL 1) Tanveer • Causes of Exception Occurrence Waleed • Example Program 2 ( DL 2) Raza • Example Program 3 ( DL 3) • Grading • Q/A Session
  • 5. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Example Program 1 ( DL 1) • Causes of Exception Occurrence • Example Program 2 ( DL 2) • Example Program 3 ( DL 3) • Grading • Q/A Session
  • 6. ERRORS AND ITS TYPES • There are three basic types of errors: 1- Syntax Error 2- Semantic Errors 3- Logical Errors These errors are detected by the ‘C’ compiler • There are also a few kinds of errors in ‘C’ those are not detected by the compiler. 4- Run Time Errors 5- Compile Time Errors These error are not identified by the compiler and so they are termed as “EXCEPTIONS”
  • 7. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Example Program 1 ( DL 1) • Causes of Exception Occurrence • Example Program 2 ( DL 2) • Example Program 3 ( DL 3) • Grading • Q/A Session
  • 8. WHAT IS REALLY AN EXCEPTION? • An exception is an indication of a problem that occurs during a program’s execution. • Exception is a runtime problem that occurs rarely handling an exception allows programs to continue executing as if no problem had been encountered. • Helps terminating the program in a controlled manner rather in an unpredictable fashion • Exception handling enables programmers to create applications that can resolve (or handle) exceptions.
  • 9. DIFFERENCES BETWEEN AN ERROR AND AN EXCEPTION 1- Errors occur at compilation time as well as run time while exceptions mostly occur at run time. 2- Compile time errors are detected by the compiler while exceptions need to be predicted by the programmer himself 3- Errors occur frequently while exceptions, as the name suggests occur seldom 4- Error detection and debugging is easier while exception prediction and its handling is a bit complex procedure 5- Errors can be removed by removing syntax and logical mistakes while exception handling needs pre-defined or user defined procedures.
  • 10. BENEFITS: • Helps improve a program's fault tolerance. • Enables the programmer to remove error-handling code from the ‘main line’ of the program’s execution • Programmers can decide to handle any exceptions they choose – all exceptions of a certain type or all exceptions of a group of related types
  • 11. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Example Program 1 ( DL 1) • Causes of Exception Occurrence • Example Program 2 ( DL 2) • Example Program 3 ( DL 3) • Grading • Q/A Session
  • 12. EXCEPTION HANDLING IN C • C does not provide direct support for error/exception handling. • By convention, the programmer is expected to develop an algorithm for an error and exception case free program. • Intelligent visualization skills and prediction of end-user actions on a particular event prevents errors from occurring in the first place. • The programmer is expected to test return values from a function.
  • 13. Exception handling is designed to: Process synchronous errors, which occur when a statement executes. Common examples of these errors are: 1. out-of-range array subscripts 2. arithmetic overflow 3. division by zero 4. invalid function parameters 5. unsuccessful memory allocation, due to lack of memory Exception handling is not designed to: Process errors associated with asynchronous events fro example: 1. Disk I/O completions 2. Network message arrivals 3. Mouse-clicks and keystrokes which occur in parallel with, and independent of, the program’s flow control.
  • 14. HOW TO HANDLE AN EXCEPTION: - Ignore the exception (Non – Professional ) - Abort the program ( Even Worst ) - Set error indicators ( Beginner’s Approach ) - Issue an error-message and call exit(). ( Non – Feasible ) - Use setjmp() and longjmp() ( Leading to Professional)
  • 15. THE CLASSIC ‘C’ APPROACH TO EXCEPTION HANDLING. • Each function returns a value indicating success or failure. • Every function must check the return code of every function call it makes and take care of errors. • Exceptions make it easy to separate error handling from the rest of the code. • Exceptions make it easy to separate error handling from the rest of the code. • Intermediate functions can completely ignore errors occurring in functions they call, if they can't handle them anyway
  • 16. Main body { Any program… Program Pauses and control is Exception Occurs shifted to some other function Further program End of program Now the user defined function decides what to do with that particular exception }
  • 17. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Example Program 1 ( DL 1) • Causes of Exception Occurrence • Example Program 2 ( DL 2) • Example Program 3 ( DL 3) • Grading • Q/A Session
  • 18. METHODS OF EXCEPTION HANDLING There are two methods to handle an exception in C. 1- if - else method 2- setjmp() and longjmp() method
  • 19. METHODS OF EXCEPTION HANDLING 1- if - else method • Exception is handled by making decisions via if – else. • Occurrence of an exception is checked by the return values of a function or by defined parameters. • Along with that condition is placed an if – else statement that checks and performs the respective action against that exception.
  • 20. METHODS OF EXCEPTION HANDLING 1- if - else method main() { code… code… EXCEPTION if (n==exception condition) printf(“Operation cannot be performed”); /*here we have to decide whether to exit the program or to ignore the exception and run the program anyway */ else continue code… }
  • 21. METHODS OF EXCEPTION HANDLING 2- setjmp () and longjmp() method: • setjmp() and longjmp() are used to jump away from a particular location in a program into another function. • The programmer written code, inside that function handles the exception • To test the occurrence of an exception the setjmp() function is called up. • setjmp() saves the most recent event of the program before that statement in a buffer called jmp_buf.
  • 22. METHODS OF EXCEPTION HANDLING 2- setjmp () and longjmp() method: • As soon as the exception test is complete the setjmp() returns a value to the function. • If the value returned from the setjmp() to the longjmp() is ‘0’ it means that there was an exception condition. • Now the program will again start from the same point where it stopped (saved in the buffer), until the exception condition is removed or repaired. • On the other hand programmer can also display error messages or other fool-proof techniques.
  • 23. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Programs Difficulty Level 1 • Causes of Exception Occurrence • Programs Difficulty Level 2 • Programs Difficulty Level 3 • Grading • Q/A Session
  • 24. PROGRAM DIFFICULTY LEVEL 1 PROGRAM 1: #include <stdio.h> void main (void) { int a , b , c ; a=1; b=0; c=a/b printf(“%d”,c); }
  • 25. #include <stdio.h> /* for fprintf and stderr */ #include <stdlib.h> /* for exit */ PROGRAM 2 int main( void ) DL 1 { float dividend = 50; float divisor ; float quotient; printf("Enter a divisor for a dividend of 50nn"); scanf("%f", &divisor); if (divisor == 0) { /* Example handling of this error. Writing a message to stderr, and * exiting with failure. */ fprintf(stderr, "nnDivision by zero !!! Aborting... ={ nn"); exit(EXIT_FAILURE); /* indicate failure.*/ } quotient = (dividend/divisor); printf("n%.2fnn",quotient); exit(EXIT_SUCCESS); /* indicate success.*/ }
  • 26. #include <setjmp.h> #include <stdio.h> PROGRAM 3 #include <stdlib.h> void main(void) DL 1 { float dividend = 50; float divisor ; float quotient; jmp_buf env; printf("Enter a divisor for a dividend of 50nn"); setjump(env); Stores the scanf() statement in a buffer scanf("%f", &divisor); if (divisor == 0) Exceptional Case longjmp(env,2); Throws back to where we paused quotient = (dividend/divisor); printf("n%.2fnn",quotient); exit(EXIT_SUCCESS); /* indicate success.*/ return 0; }
  • 27. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Programs Difficulty Level 1 • Causes of Exception Occurrence • Programs Difficulty Level 2 • Programs Difficulty Level 3 • Grading • Q/A Session
  • 28. CAUSES OF EXCEPTION HANDLING Exception Class Cause ArgumentException An argument to a method was invalid. A null argument was passed to a method that ArgumentNullException doesn't accept it. ArgumentOutOfRangeException Argument value is out of range. ArithmeticException Arithmetic over - or underflow has occurred. Attempt to store the wrong type of object in an ArrayTypeMismatchException array. DivideByZeroException An attempt was made to divide by zero. FormatException The format of an argument is wrong. NotFiniteNumberException A number is not valid. NullReferenceException Attempt to use an unassigned reference. OutOfMemoryException Not enough memory to continue execution.
  • 29. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Programs Difficulty Level 1 • Causes of Exception Occurrence • Programs Difficulty Level 2 • Programs Difficulty Level 3 • Grading • Q/A Session
  • 30. #include <stdio.h> /* fprintf */ #include <errno.h> /* errno */ PROGRAM 1 #include <stdlib.h> #include <string.h> /* malloc, free, exit */ /* strerror */ DL 2 extern int errno; int main( void ) { /* pointer to char, requesting dynamic allocation of 2,000,000,000 * storage elements (declared as an integer constant of type * unsigned long int). (If your system has less than 2GB of memory * available, then this call to malloc will fail) */ char *ptr = malloc( 2000000000 ); if ( ptr == NULL ) puts("malloc failed"); else { /* the rest of the code hereafter can assume that 2,000,000,000 * chars were successfully allocated... */ free( ptr ); } exit(EXIT_SUCCESS); /* exiting program */ }
  • 31. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Programs Difficulty Level 1 • Causes of Exception Occurrence • Programs Difficulty Level 2 • Programs Difficulty Level 3 • Grading • Q/A Session
  • 32. PROGRAM 1 DL 3
  • 33. PRESENTATION CONTENTS • Team/Topic Introduction • Errors & its Types • Exception Handling Basics • Occurrence & Handling of an Exception ( Flow diagrams ) • Methods to handle an Exception • Programs Difficulty Level 1 • Causes of Exception Occurrence • Programs Difficulty Level 2 • Programs Difficulty Level 3 • Grading • Q/A Session
  • 34. GROUP C GRADING Group leader: Raza Najam Members Name Searching Teamwork PPT Skills Willing to C Presentation Skills Total/10 10 10 10 10 10 5 Hassaan Idrees 8 8 7 7 8 3.8 Syed Ahmed Fuad 8 8 5 9 7 3.7 Tanveer Hussain 8 8 5 6 5 3.2 Waleed Raza 7 7 5 5 4 2.8 Hasan Qamar - - - - - -
  • 35. Q/A