Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kiedy używać wyjątków?
zbig13
post
Post #1





Grupa: Zarejestrowani
Postów: 214
Pomógł: 0
Dołączył: 3.04.2004
Skąd: Legionowo

Ostrzeżenie: (0%)
-----


Witam!

Jestem w trakcie tworzenia obiektowego skryptu w php5. Zacząłem od własnego sterownika bazy danych. Napisałem taki kod:

  1. <?php
  2.  
  3. class DBMySQL
  4. {
  5.  
  6. private static $dbcon;
  7. private static $dbhandle;
  8. private static $query;
  9. private static $liczbaZapytan;
  10. private static $queryResult;
  11. private static $temp;
  12.  
  13. public function __construct()
  14. {
  15. self::$zapytan = 0;
  16. self::$dbcon = FALSE;
  17. }
  18.  
  19. public static function connect($host, $user, $pswd)
  20. {
  21. self::$dbcon = @mysql_connect($host, $user, $pswd);
  22. if (!self::$dbcon) {
  23. throw new Exception('Nie udało się połączyć z bazą danych.');
  24. }
  25. return self::$dbcon;
  26. }
  27.  
  28. public static function selectDb($dbname)
  29. {
  30. self::$dbhandle = @mysql_select_db($dbname);
  31. if (!self::$dbhandle) {
  32. throw new Exception('Nie udało się wybrać bazy.');
  33. }
  34. return self::$dbhandle;
  35. }
  36.  
  37. public static function query($query)
  38. {
  39. self::$liczbaZapytan++;
  40. self::$query = $query;
  41. return mysql_query(self::$query);
  42. }
  43.  
  44. public static function fetchArray($result)
  45. {
  46. self::$queryResult = $result;
  47. self::$temp = mysql_fetch_array(self::$queryResult);
  48. return self::$temp;
  49. }
  50.  
  51. public static function numRows($result)
  52. {
  53. self::$queryResult = $result;
  54. return mysql_num_rows(self::$queryResult);
  55. }
  56.  
  57. public static function realEscapeString($string)
  58. {
  59. return mysql_real_escape_string($string, self::$dbcon);
  60. }
  61.  
  62. public static function startTransaction()
  63. {
  64. self::query('BEGIN');
  65. }
  66.  
  67. public static function acceptTransaction()
  68. {
  69. self::query('COMMIT');
  70. }
  71.  
  72. public static function rollbackTransaction()
  73. {
  74. self::query('ROLLBACK');
  75. }
  76.  
  77. public static function returnQueries()
  78. {
  79. return $liczbaZapytan;
  80. }
  81.  
  82. }
  83.  
  84. ?>


W dwóch sytuacjach użyłem rzucania wyjątków w przypadku błedu (łączenie z bazą i wybieranie bazy). Chciałem też dać obsługe wyjątków do innych funkcji, np. query(), ale jakoś nie wyobrażam sobie później takiego wykonywania zapytań:
  1. <?php
  2. try {
  3. DBMySQL::query("SELECT * FROM tabela");
  4. } catch (Exception $e) {
  5. echo $e->getmessage();
  6. }
  7. ?>

Jest jakiś sposób na rzucanie wyjątków, żeby nie trzeba było ich później za każdym razem obsługiwać w kodzie? I czy warto rzucać wyjątki w przypadku takiej funkcji jak query(), lub numRows()?

Ten post edytował zbig13 27.03.2006, 07:56:12
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Prph
post
Post #2





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Cytat(g00fy @ 2006-04-04 15:15:05)
pozatym dobrze sobie zawsze ustawiać zmienna czy funkcja ma wyrzucać wyjątki czy zwracać wartość null lub false.

Yyy, nie bardzo rozumiem... Opisz to lepiej.
Go to the top of the page
+Quote Post

Posty w temacie
- zbig13   Kiedy używać wyjątków?   26.03.2006, 16:38:17
- - Prph   Nie rozumiem, dlaczego query to zle miejsce na wyj...   26.03.2006, 17:08:43
- - zbig13   Nie rozumiem tych Twoich przykładów. Mi chodzi po ...   26.03.2006, 17:24:52
- - dr_bonzo   CytatA wolałbym prościej: .... przeciez i tak bed...   26.03.2006, 17:39:17
- - zbig13   Ok juz rozumiem. Dzięki za pomoc   26.03.2006, 17:56:55
- - SongoQ   Dorzuc tam transakcjem, logowanie czasow zapytania...   26.03.2006, 19:37:32
- - zbig13   Mam jeszcze jedno pytanie w związku z tym rzucanie...   27.03.2006, 06:32:40
- - SongoQ   CytatA co to są transakcje? W google znajdziesz. D...   27.03.2006, 07:52:03
- - zbig13   Ok, już dodałem (kod w moim pierwszym poście) tylk...   27.03.2006, 07:59:09
- - Prph   Jest bardzo wiele sytuacji w ktorzych korzystasz z...   27.03.2006, 08:19:13
- - zbig13   No dobra przekonałeś mnie A co do tej funkcji qu...   27.03.2006, 08:43:45
- - SongoQ   Mozesz ewentualnie zrobic cos w rodzaju debug zapy...   27.03.2006, 08:52:27
- - Vengeance   CytatBo jak sprawdzam w metodzie, to cały skrypt m...   28.03.2006, 20:42:59
- - zbig13   Tak rozumiem, dlatego zrezygnowałem z wyjątków w f...   29.03.2006, 06:38:09
- - mike_mech   Cytat(Vengeance @ 2006-03-28 20:42:59)Cytat B...   29.03.2006, 09:04:10
- - SongoQ   CytatTo zależy od natury wyjątku, ale powinniśmy ł...   29.03.2006, 09:10:38
- - zbig13   To konkretnie jak lepiej robić? : - Tam gdzie to m...   29.03.2006, 14:18:11
- - Vengeance   mike_mech: Chodziło mi raczej oto, że stosowanie w...   29.03.2006, 14:22:43
- - DeyV   @ Vengeance - ale już w przypadku system::create...   29.03.2006, 18:32:40
- - Vengeance   Ale czy ja mówię, że wyjątki są złe? Przykłady któ...   29.03.2006, 19:27:50
- - g00fy   pozatym dobrze sobie zawsze ustawiać zmienna czy f...   4.04.2006, 16:15:05
- - Prph   Cytat(g00fy @ 2006-04-04 15:15:05)pozatym dob...   5.04.2006, 09:43:23
- - SongoQ   Autorowi chyba chodzilo o tryb pracy czy z z wyjat...   5.04.2006, 10:50:32


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 01:28