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

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: 24.08.2025 - 14:30