Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> SOAP obsługa błędów
wariat12
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 28.03.2015

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


Witam, mam kod, który łączy się z API za pomocą SOAP

  1. $soap = new SoapClient(null, array('location' => 'http://xx/server.php?wsdl', 'uri' => ' '));


a następnie wywołuję funkcję, która pobiera dane:
  1. $wynik = $soap->pobierz('kod', $id, $i);


Funkcja działa w pętli, gdyż wywoływana jest dla sporej ilości informacji, niestety w systemie są id, które nie istnieją i w momencie, gdy zmienna $id właśnie na coś takiego trafi, to wyrzuca błąd:

  1. Fatal error: Uncaught SoapFault exception: [1] brak id w systemie in [HTTP] Stack trace: #0 [HTTP]: SoapClient->__call('pobierz', Array) #1 [HTTP]: SoapClient->pobierz('xx...', 15746) #2 {main} thrown in [HTTP] on line 15


Jak podejść do tematu, żeby po prostu brakujące id były pomijane?
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




try... catch.... ?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post
Post #3





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


  1. if (isset($id)) { $wynik = $soap->pobierz('kod', $id, $i); }


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@LowiczakPL problemem bylo ze w systemie nie ma id zawartego w zmiennej $id a nie ze zmienna $id nie byla ustawiona


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post
Post #5





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


czy w takim razie wysłanie 'exceptions' => false nie zignoruje błędu ?


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nawet jesli tak, to zniweluje to rowniez inne exceptions przy innej okazji, ktore wypadaloby moze jednak otrzymywac.
try...catch... wydaje sie najlepszym rozwiazaniem, bo robisz wtedy co chcesz i jak chcesz.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post
Post #7





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


to proponuję jeszcze http://php.net/manual/en/function.is-soap-fault.php


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A co ty tak wyjatkow nie lubisz? wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
LowiczakPL
post
Post #9





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


Ależ to jest z obsługą wyjątków.

  1. <?php
  2. try {
  3. $client = new SoapClient("some.wsdl");
  4. $result = $client->SomeFunction(/* ... */);
  5. } catch (SoapFault $fault) {
  6. trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR);
  7. }
  8. ?>


Ten post edytował LowiczakPL 9.05.2016, 16:37:00


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No wlasnie nie. Sam podales is-soap-fault() a to wlasnie jest po to by nie miec wyjatkow


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 06:11