Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pytanko o try...catch
Forum PHP.pl > Forum > Przedszkole
gazelek
Witam!
Jestem w trakcie lektury ksiazki traktujacej o PHP5. W trakcie natknalem sie na wzmianke o programowaniu obiektowym (ktorego wczesniej nie stosowalem) no i pojawila sie dygresja o wyjatkach. W zwiazku z tym taki kod:

Kod
<?php

try{
    throw new OutOfRangeException();
}
catch(Exception $e){
    echo "Blad Exception";
}
catch(OutOfRangeException $e){
    echo "Blad OutOfRangeException";
}
//tutaj
?>


Pomijajac zla kolejnosc obslugiwania wyjatkow (Exception stoi wyzej w hierarchii niz OutOfRangeException, wiec kolejnosc catch'y powinna byc odwrotna), to nasuwa mi sie pytanie o try...catch (ktorego wczesniej nie stosowalem). Jesli w pierwszym catch porownanie zwraca wartosc true, wykonane zostają instrukcje z nawiasów, to od ktorego miejsca dalej wykona sie kod? Czy wejdzie do kolejnego catcha, czy tez wyjdzie do miejsca, w ktorym umiescilem komentarz
Kod
//tutaj

Bo zasadniczo try...catch pod wzgledem skladniowym przypomina troche switch...case, gdzie po kazdym case nalezalo stosowac break..

Zakladajac wystapienie wyajtku OutOfRangeException obydwa porownania zwroca true...Wiec jak to jest?
dr_bonzo
try/catch to NIE jest switch case.

Wykonywany jest pierwszy pasujacy catch i tylko on, a nastepnie kod PO ostatnim catch.
gazelek
Cytat(dr_bonzo @ 9.06.2008, 10:26:37 ) *
try/catch to NIE jest switch case.


Wiem smile.gif ale skladniowo (konstrukcja) sa podobne.

Cytat(dr_bonzo @ 9.06.2008, 10:26:37 ) *
Wykonywany jest pierwszy pasujacy catch i tylko on, a nastepnie kod PO ostatnim catch.


Dzieki, o to mi chodzilo. Plus dla Ciebie, a na temat klodka.
nospor
@gazelek mam dla Ciebie jeszcze jedna źródło informacji:
http://pl2.php.net/manual/pl/language.exceptions.php
masz tam ładnie na przykładach podane co sie kiedy wykona. Korzystaj z manuala bo tam naprawde na wiele pytan znajdziesz odpowiedź. Pomijam juz drobny szczegol ze ten kod mogles sobie wykonac i sprawdzic co sie wykona.
mike
Cytat(gazelek @ 9.06.2008, 11:06:32 ) *
Plus dla Ciebie, a na temat klodka.
Kolejny egoista na forum? Dlaczego chętnie zamknąłbyś wątek, który Ci pomógł? Forum to przede wszystkim społeczność, która pomaga sobie nawzajem.
A co z osobami, ktore miałyby coś do dodania, albo które przy okazji tego wątku zapytałyby o pomoc w podobnej sytuacji? Mają zakładać setki identycznych wątków zamiast "podłączyć się" pod temat i dopytać? Tu nie chodzi o egoistyczne podejście, że "to jest mój wątek", tu chodzi o to by nie zrobić śmietnika i żeby forum miało konkretną wartość.
To jest dyskusja na forum.
kszychu
Jeżeli w temacie nie pojawiają się niepotrzebne i nie wnoszące dyskusje, nie zamykamy wątków. Może kiedyś ktoś to odgrzebie i doda coś od siebie, a ktoś inny to znajdzie i wyciągnie z tego coś dla siebie.
Tak więc wszystkich, którzy to czytają proszę: jeśli z takiego czy innego powodu chcecie zamknięcia wątku, zgłaszajcie to za pomocą przycisku "Raportuj". Decyzję co i kiedy zamknąć, zostawcie proszę moderatorom.
gazelek
Oj, czepiliscie sie winksmiley.jpg myslalem o zamknieciu watku tylko dlatego, zeby sie nie pojawily niepotrzebne dyskusje. Ale skoro tutaj panuje taka zasada, zeby nie zamykac watkow, to ja sie jak najbardziej podporzadkowuje smile.gif Zatem koniec tematu, bez klodki biggrin.gif
dr_bonzo
Cytat
Cytat
try/catch to NIE jest switch case.


Wiem ale skladniowo (konstrukcja) sa podobne.

Dla tego wlasnie napisalem ze to NIE to samo - zebys sie nie sugerowal dzialaniem switcha, tylko poczytal o catch'ach.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.