Wykonanie instrukcji pass podczas przetwarzania wyjątku

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:

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.

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.

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ł...

1 użytkowników online, w tym zalogowanych: 0, gości: 1