Esempio n. 1
0
function fL1($p1 = -10)
{
    try {
        echo "fL1: In try-block\n";
        //  throw new Exception();
        throw new Exception("fL1 Message", 123);
    } catch (Exception $e) {
        echo "fL1: In catch-block\n";
        displayExceptionObject($e);
    } finally {
        echo "fL1: In finally-block\n";
    }
    echo "fL1: Beyond try/catch/finally blocks\n==========\n";
    echo "fL1: Calling fL2\n";
    $a = -4.5;
    fL2(2.3, $a);
    // pass 2nd arg as a non-literal to see how traceback handles it
    //fL2(2.3); // see what happens when a default argument value is used
}
function fL1($p1 = -10)
{
    // define fL2 inside fL1
    function fL2($p1, $p2 = -100)
    {
        // define fL3 inside fL2
        function fL3($p1, $p2, $p3 = -1000)
        {
            try {
                echo "fL3: In try-block\n";
                //  throw new Exception();
                throw new Exception("fL3 Message", 345);
            } catch (Exception $e) {
                echo "fL3: In catch-block\n";
                displayExceptionObject($e);
            } finally {
                echo "fL3: In finally-block\n";
            }
            echo "fL3: Beyond try/catch/finally blocks\n==========\n";
        }
        try {
            echo "fL2: In try-block\n";
            //  throw new Exception();
            throw new Exception("fL2 Message", 234);
        } catch (Exception $e) {
            echo "fL2: In catch-block\n";
            displayExceptionObject($e);
        } finally {
            echo "fL2: In finally-block\n";
        }
        // fL2 definition continues here
        echo "fL2: Beyond try/catch/finally blocks\n==========\n";
        echo "fL2: Calling fL3\n";
        $a = "xyz";
        $b = NULL;
        $c = TRUE;
        fL3($a, $b, $c);
        // pass args as a non-literal to see how traceback handles them
        //fL3($a, $b);  // see what happens when a default argument value is used
    }
    try {
        echo "fL1: In try-block\n";
        //  throw new Exception();
        throw new Exception("fL1 Message", 123);
    } catch (Exception $e) {
        echo "fL1: In catch-block\n";
        displayExceptionObject($e);
    } finally {
        echo "fL1: In finally-block\n";
    }
    // fL1 definition continues here
    echo "fL1: Beyond try/catch/finally blocks\n==========\n";
    echo "fL1: Calling fL2\n";
    $a = -4.5;
    fL2(2.3, $a);
    // pass 2nd arg as a non-literal to see how traceback handles it
    // fL2(2.3);    // see what happens when a default argument value is used
}