wklejto.pl

Dodane przez: ~Anonim (2012-10-23 23:17) -> php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
class myException extends Exception
{
        protected $before=null;
//wyjątek zagnieżdżony
        /*** 
                standardowe getery i setery
                znaczek & wymusza użycie referencji po powinno zaoszczędzić RAM i CPU
        ***/
        public function setBeforeException(myException &$before)
        {
                $this->before=$before;
        }
        public function getBeforeException()
        {
                return $this->before;
        }
 
}
function a($arg=0)
{
        if($arg==1)
        {
                return true;
        }
        return new myException('aa');
 
}       
function b($arg=0)
{
        if($arg==1)
        {
                return true;
        }
 
        return new myException('bb');
 
}
/***  funkcja zapisuje wyjątek jeden w drugim, wyjątki podajemy jako kolejne argumenty ***/
function cascadeException()
{
        $first=null;
//pierwszy wyjątek, ten będzie rzucany
        $last=null;
//ostatnio użyty wyjątek, do tego dodajemy kolejne 
        $args=func_get_args();
//pobranie argumentów
        if(count($args)>0)
        {
                foreach($args as $a)
                {
                        if($a instanceof myException)
                        {
                                if($first==null)
                                {
                                        $first=$a;
                                        $last=$first;
                                }
                                else
                                {
                                        $last->setBeforeException($a);
                                        $last=$a;
                                }
                                
                        }
 
                }
                if($first!=null)
                {       
                        throw $first;
                }
        }
 
}
try
{
        if(($a=a(0))===true || ($b=b(0))===true )
        {
                echo 'ok';
        }
        else
        {
                cascadeException($a,$b);
//jeśli wystąpił błąd to zapisz kolejne wyjątki jeden w drugim 
        }
        
}
catch(Exception $e)
{
        $err=array();
//tablica wiadomości
        $err[]=$e->getMessage();
//wiadomość pierwszego rzuconego wyjątku
        $tmp=$e;
//zmienna pomocnicza 
        while(($tmp=$tmp->getBeforeException())!==null)
//pobierz kolejne wyjątki
        {
                $err[]=$tmp->getMessage();
//dopisz wiadomość
        }
        var_dump($err);
}
Wygenerowano w 0.103s, przy pomocy GeSHi 1.0.8
'
Podziel się na Facebook Podziel się na BLIP Podziel się na Twitter Podziel się na Buzz Podziel się na Flaker Dodaj zakładkę Google Podziel się na Delicious Wykop to!

Nowy Komentarz:

Komentarze:

Brak Komentarzy!