[ Príspevkov: 13 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
obsluha výnimiek php

Registrovaný: 23.08.10
Prihlásený: 30.10.11
Príspevky: 39
Témy: 7 | 7
NapísalOffline : 24.08.2010 16:13 | obsluha výnimiek php

Mohli byste mi to niekto objasniť proším ? Ako to funguje ? a má cenu to použivať (zrejme áno inak by to niekto nevymýšlal :) ale aj tak sa pýtam)


Offline

Čestný člen
Čestný člen
obsluha výnimiek php

Registrovaný: 11.08.07
Príspevky: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 24.08.2010 16:19 | obsluha výnimiek php

Pouzivas try-catch bloky. http://sk2.php.net/manual/en/language.exceptions.php
Ono vynimky nie su v PHP az take vyuzitelne ako v inych jazykoch, nakolko zabudovane funkcie nevyhadzuju vynimky, ale obycajne chyby.


Offline

Užívateľ
Užívateľ
obsluha výnimiek php

Registrovaný: 23.08.10
Prihlásený: 30.10.11
Príspevky: 39
Témy: 7 | 7
Napísal autor témyOffline : 24.08.2010 16:21 | obsluha výnimiek php

Hej hej, len chcem mat dobry navyk ich pouzivat kedze vela inych jazykov ich vyuziva ... myslim ze je to dobry zvyk


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1719
Témy: 0 | 0
NapísalOffline : 24.08.2010 21:51 | obsluha výnimiek php

Niekedy je lepšie (a hlavne oveľa rýchlejšie), keď funkcia namiesto vyvolania výnimky pošle nejakú špeciálnu návratovú hodnotu (napr. funkcia na načítanie obrázka pri chybe vráti NULL a nie ukazovateľ na dáta...).


Offline

Užívateľ
Užívateľ
obsluha výnimiek php

Registrovaný: 23.08.10
Prihlásený: 30.10.11
Príspevky: 39
Témy: 7 | 7
Napísal autor témyOffline : 25.08.2010 17:06 | obsluha výnimiek php

Dovolte aby som sa opat vratil k tejto teme ... napisal som jednoduchu ukážku s ktorou potrebujem poradit, problem je v tom ze potrebujem ulozit chybove hlasenie 1 a 2 do pola array ktoré sa následne vypise, avsak vzdy sa mi ulozi iba jedno z dvoch hlaseni (do tohto pola)

Kód:
<?php

class database
{
   private $err;
   
   public function __construct()
   {
      $this->err = array();
   }
   
   public function connectDb()
   {
      return false;  // pokial false vypis chybove hlasenie 1
   }
   
   public function connectDb2()
   {
      return false;  // pokial false vypis chybove hlasenie 2
   }
   
   
   public function checkError()
   {
      try
      {
         if(!$this->connectDb())
         {
            throw new Exception('Nastala chyba 1');  // hlasenie 1
         }
         
         if(!$this->connectDb2())
         {
            throw new Exception('Nastala chyba 2');  // hlasenie 2
         }
      }   
      
      catch(Exception $e)
      {
      $this->err[] = $e->getMessage();   // tu potrebujem ulozit do pola hlasenia oboch chyb ak nastalo
      }      
   }
   
   public function showErrors()
  {
    echo "<h3>Errors</h3>";
    foreach($this->err as $key=>$value)   
      echo $value."<br>";   // vypis chyb z pola
  }
   
}

$newObj = new database();
$newObj->connectDb2();
$newObj->connectDb();
$newObj->checkError();
$newObj->showErrors();

?>


Offline

Užívateľ
Užívateľ
obsluha výnimiek php

Registrovaný: 20.07.08
Príspevky: 474
Témy: 1 | 1
Bydlisko: Kosice
NapísalOffline : 25.08.2010 17:29 | obsluha výnimiek php

musis pouzit dva try/catch bloky lebo prvy throw sposobi ze dalsi kod sa ani nevykona


_________________
CPU: Q9550 3.2 GHz + Noctua NH-U12P MB: Gigabyte P35-DS3R RAM: 4x2GB Geil Black Dragon VGA: Palit GTX 750 Ti KalmX SSD: Corsair Extreme 64GB + Kingston V+ 64GB + Patriot PC25S HDD: WD20EFRX + Silentmaxx + Scythe KamaBay + Noctua NF-S12-800 DVD: Pioneer DVR-221LBK CASE: Compucase 6XG3 + 2xNoctua NF-S12B-FLX PSU: Seasonic X-650 AUDIO: Fubar4 + Creative I-Trigue 3500 + AKG K271 MOUSE: Logitech G500 + SteelPad QcK KEYB: Logitech Illuminated LCD: Benq FP241W PVA PHONE: Galaxy S4 Mini CARS: STI+VTS
Offline

Užívateľ
Užívateľ
obsluha výnimiek php

Registrovaný: 23.08.10
Prihlásený: 30.10.11
Príspevky: 39
Témy: 7 | 7
Napísal autor témyOffline : 25.08.2010 17:33 | obsluha výnimiek php

no a neda sa to nejako cez array ? sak to budem mat potom milion throw blokov ... nedasa to nejako cez jeden blok ?


Offline

Užívateľ
Užívateľ
obsluha výnimiek php

Registrovaný: 20.07.08
Príspevky: 474
Témy: 1 | 1
Bydlisko: Kosice
NapísalOffline : 25.08.2010 17:38 | obsluha výnimiek php

tak to neries cez throw ale rovno v tych If-och vloz hlasku do pola (bez try/catch)


_________________
CPU: Q9550 3.2 GHz + Noctua NH-U12P MB: Gigabyte P35-DS3R RAM: 4x2GB Geil Black Dragon VGA: Palit GTX 750 Ti KalmX SSD: Corsair Extreme 64GB + Kingston V+ 64GB + Patriot PC25S HDD: WD20EFRX + Silentmaxx + Scythe KamaBay + Noctua NF-S12-800 DVD: Pioneer DVR-221LBK CASE: Compucase 6XG3 + 2xNoctua NF-S12B-FLX PSU: Seasonic X-650 AUDIO: Fubar4 + Creative I-Trigue 3500 + AKG K271 MOUSE: Logitech G500 + SteelPad QcK KEYB: Logitech Illuminated LCD: Benq FP241W PVA PHONE: Galaxy S4 Mini CARS: STI+VTS
Offline

Užívateľ
Užívateľ
obsluha výnimiek php

Registrovaný: 23.08.10
Prihlásený: 30.10.11
Príspevky: 39
Témy: 7 | 7
Napísal autor témyOffline : 25.08.2010 17:45 | obsluha výnimiek php

no hej aj tak sa da, ale chcel som skusit aj tuto variantu kedze v inych programovacich jazykoch je pouzivanma


Offline

Užívateľ
Užívateľ
obsluha výnimiek php

Registrovaný: 23.08.10
Prihlásený: 30.10.11
Príspevky: 39
Témy: 7 | 7
Napísal autor témyOffline : 25.08.2010 19:09 | obsluha výnimiek php

ok vyriesil som to inak ale mam dalsi problem :D a to ze ked napisem ine meno napr . throw new MyExceptionTwo (miesto throw new Exception) tak my vypise chybu ze trieda nebola najda (Fatal error: Class 'MyExceptionTwo' not found in) neviete co s tym ??

Kód:
<?php
class checkNum
{
      
      private $num1;
      private $num2;
      
      public function __construct()
      {
         $this->num1 = 12;
         $this->num2 = 31;
      }
      
      public function testuj()
      {
         if($this->num1 < 30)
         {
            return true;
         }
         else
         {
            return false;   
         }
      }
      
      public function testujDva()
      {
         if($this->num2 > 50)
         {
            return true;
         }
         else
         {
            return false;
         }
      }
         
      public function chyby()
      {
         try
         {
            if(!$this->testuj())
               throw new MyException("chyba 1");
               
            if(!$this->testujDva())
               throw new MyExceptionTwo("chyba 2");
         }
         
         catch(MyException $e)
         {
            echo 'Error : ' . $e->getMessage();
         }
         
         catch(MyExceptionTwo $i)
         {
            echo 'Error : ' . $i->getMessage();               
         }
      }
      
}

$obj = new checkNum();
$obj->chyby();


?>


Offline

Čestný člen
Čestný člen
obsluha výnimiek php

Registrovaný: 11.08.07
Príspevky: 4110
Témy: 30 | 30
Bydlisko: Brno
NapísalOffline : 25.08.2010 19:20 | obsluha výnimiek php

No samozrejme, vsak si musis tuto triedu zadefinovat.
Kód:
class MyException extends Exception
{
   public function __construct($message, $errno = 0)
   {
      //sem tvoj kod

      //este zavolame konstruktor samotnej triedy Exception
      parent::__construct($message, $errno);
   }
}
Este mozes prepisat metodu __toString, inak nic. Mas nejaky dovod k nahradeniu Exception vlastnou triedou?


Offline

Užívateľ
Užívateľ
obsluha výnimiek php

Registrovaný: 23.08.10
Prihlásený: 30.10.11
Príspevky: 39
Témy: 7 | 7
Napísal autor témyOffline : 25.08.2010 19:28 | obsluha výnimiek php

No popravde tak trochu experimentujem takze asi tak :D ... no ak si pozries ten kod tak mi ide oto aby sa vypisala chyba 1 alebo chyba 2 pokial dana funkcia vrati false, a ak vratia obydve false tak potrebujem nejako vypisat dve hlasenia chybove ... no a neviem ako na to


Offline

Skúsený užívateľ
Skúsený užívateľ
obsluha výnimiek php

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14691
Témy: 66 | 66
Bydlisko: Žilina
Vek: 30
NapísalOffline : 25.08.2010 19:56 | obsluha výnimiek php

1.) používaj EDIT
2.) to, čo tu opisuješ sa v iných jazykoch musí riešiť rovnako. Vo všetkých jazykoch ti vyvolanie výnimky zastaví vykonávanie a teda neexistuje, aby ti henten kód vrátil dve chyby.

Keď už sa to učíš, tak sa to uč aspoň poriadne, pretože z týchto tvojich príspevkov vidno len to, že nechápeš čo sa kedy stane...


_________________
C#, PHP, ...
 [ Príspevkov: 13 ] 


obsluha výnimiek php



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

java: osetrovanie vynimiek - je to nevyhnutne?

v Assembler, C, C++, Pascal, Java

2

481

12.10.2007 16:56

zero0x

V tomto fóre nie sú ďalšie neprečítané témy.

RouterOS: obsluha 2 interface jednym DHCP serverom

v Siete

3

93

05.03.2014 7:56

mp3turbo

V tomto fóre nie sú ďalšie neprečítané témy.

PHP programátor - PHP, MySQL, jQuery,X)Html/CSS

v Ponuka práce

0

817

02.05.2011 12:08

magicmedia

V tomto fóre nie sú ďalšie neprečítané témy.

Vytvorenie suboru php a vlozenie php scriptu

v PHP, ASP

4

928

07.05.2010 14:02

DeiForm

V tomto fóre nie sú ďalšie neprečítané témy.

PHP nevie precitat .PHP

v PHP, ASP

8

463

18.03.2011 19:21

camo

V tomto fóre nie sú ďalšie neprečítané témy.

php ->mysql ->php Help.zoradit

v PHP, ASP

4

322

20.06.2009 12:44

KViki

V tomto fóre nie sú ďalšie neprečítané témy.

PHP

v PHP, ASP

1

2452

09.06.2005 22:39

johny128

V tomto fóre nie sú ďalšie neprečítané témy.

PHP

v PHP, ASP

18

941

01.01.2009 19:22

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

PHP

v PHP, ASP

1

537

31.05.2007 16:24

kmsa

V tomto fóre nie sú ďalšie neprečítané témy.

PHP

v PHP, ASP

2

137

08.04.2016 20:44

5had0w

V tomto fóre nie sú ďalšie neprečítané témy.

PHP problem

v PHP, ASP

15

825

30.03.2007 8:19

Punker661

V tomto fóre nie sú ďalšie neprečítané témy.

php premenne

v PHP, ASP

7

604

06.06.2008 14:33

Tominator

V tomto fóre nie sú ďalšie neprečítané témy.

Php systemy

v Redakčné systémy

3

890

09.07.2008 16:26

Triminka

V tomto fóre nie sú ďalšie neprečítané témy.

PHP attachment

v PHP, ASP

2

457

12.09.2009 15:58

d0.0b

V tomto fóre nie sú ďalšie neprečítané témy.

Učiteľ php

v Ponuka práce

1

296

15.07.2013 12:42

Daron

V tomto fóre nie sú ďalšie neprečítané témy.

PHP programator

v Ponuka práce

0

682

24.02.2010 21:48

stefe



© 2005 - 2017 PCforum, edited by JanoF