Announcement

Collapse
No announcement yet.

Throw Exceptions - unexpected and terminate functions

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Throw Exceptions - unexpected and terminate functions

    set_unexpected called because the function hasn't permission to throw exceptions. After, terminate function is launched.
    PHP Code:
    #include <iostream>
    #include <string>
    #include <stdexcept>


    using namespace std;

    ////////////////////////// samaple class

    class DivideForZeroException : public runtime_error {
    public:
        
    DivideForZeroException()
        : 
    runtime_error("Impossibile dividere per 0\n")
        {}
    };


    ///////////// termiante and unexpected functions


    void terminate_function(){
        
    cout << "terminate_function" << endl;
    }

    void unexpected_function(){
        
    cout << "unexpected_function" << endl;
    }



    ////////////// the function called to throw excpetion

    void function() throw(){

        try{
            throw 
    DivideForZeroException();
        }
        catch (
    DivideForZeroException  error){
            throw ;
        }

    }



    int main (void){
        
        
    set_terminate(terminate_function);
        
    set_unexpected(unexpected_function);
        
        ::function();

        return 
    0;

    | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio

  • #2
    Same version but the function can throw any exception. So the unexpected function isn't launched.
    PHP Code:
    #include <iostream>
    #include <string>
    #include <stdexcept>


    using namespace std;

    ////////////////////////// samaple class

    class DivideForZeroException : public runtime_error {
    public:
        
    DivideForZeroException()
        : 
    runtime_error("Impossibile dividere per 0\n")
        {}
    };


    ///////////// termiante and unexpected functions


    void terminate_function(){
        
    cout << "terminate_function" << endl;
    }

    void unexpected_function(){
        
    cout << "unexpected_function" << endl;
    }



    ////////////// the function called to throw excpetion

    void function() {

        try{
            throw 
    DivideForZeroException();
        }
        catch (
    DivideForZeroException  error){
            throw ;
        }

    }



    int main (void){
        
        
    set_terminate(terminate_function);
        
    set_unexpected(unexpected_function);
        
        ::function();

        return 
    0;

    | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio

    Comment


    • #3
      Originally posted by riham
      Perfect... thanks for this tip! Appreciate your response.
      No problem riham!
      | VFX Artist, C++ Programmer, HW Overclocker | Web: xgiovio.com Email: xgiovio@gmail.com Twitter: @xgiovio

      Comment


      • #4
        likes as forum
        ___________

        ahmed

        Comment

        Working...
        X

        Google Profile


        My name is Giovanni Di Grezia, but people call me xgiovio.

        Here is my homepage:.

        I'm a VFX Artist and Software Developer.

        Giovanni Di Grezia