Wykonanie instrukcji pass podczas przetwarzania wyjątku

Wykonanie instrukcji pass podczas przetwarzania wyjątku
Shizzer
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 231
0

Witajcie

Zastanawia mnie jedna rzecz, której wykonanie bardzo ułatwiłoby mi pracę nad kodem. Mianowicie czy taka konstrukcja jest poprawna jeśli chodzi o clean code:

Kopiuj
data = client_data.recv(1024)
try:
    param = data.split(" ")[1]
except IndexError:
    pass

Przypuśćmy, że pobrane dane od clienta to komenda ls. Jak wiadomo komenda ta nie musi posiadać jakichkolwiek argumentów toteż IndexError w tym przypadku wystąpi, natomiast nie ma potrzeby go obsługiwać i najwygodniej byłoby obejść to takim kodem jak powyżej. Czy taka obsługa wyjątków jest w tej sytuacji uzasadniona?

Poprzedzając pytanie, czytałem ten wątek: https://stackoverflow.com/questions/21553327/why-is-except-pass-a-bad-programming-practice. Jest w nim napisane, że w niektórych przypadkach pass po instrukcji except ma sens.

  • Rejestracja: dni
  • Ostatnio: dni
0

jak wyprintujesz do loga jakiś komunikat w przypadku excepta, że nie ma takiego klienta to korona z głowy nie spadnie, a może komuś kto kiedyś będzie utrzymywał Twój kod uratuje to tyłek i oszczędzi pracy.

koszalek-opalek
  • Rejestracja: dni
  • Ostatnio: dni
0

Ogólnie jakiś ślad po wyjątku powinien zostać -- chyba, że jest to wyjątek, który nie jest błędem -- na przykład niektóre funkcje standardowe wyjątek wyrzucają, gdy nie mogą dać wyniku "normalnego"... No ale wtedy zamiast śladu jest reakcja specjalna i nie jest to wtedy pass czyli zignorowanie błędu...

A w Twoim przykłądzie -- co będzie ze zmienną param? Niczego dobrego w dalszych linijkach się bym nie spodziewał...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.