• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyjątki - handling

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
+1 głos
109 wizyt
pytanie zadane 6 września 2020 w Algorytmy przez Damian2102 Nowicjusz (150 p.)

Cześć, pytanko bardzo ogólne, jak poprawnie obsługiwać wyjątki, mam taki fragment kodu:

    
    def __init__(self):
        self._students_dict = self.get_students_from_json_file()

    def get_students_from_json_file(self):
        if not os.path.exists(self.STUDENTS_FILENAME):
            return {}
        try:
           w tej metodzie mogą zostać rzucone 2 wyjątki przez zewnętrzne metody, mogę je
           złapać 
        except json.JSONDecodeError:
            print("Wrong JSON format in file: {}".format(self.STUDENTS_FILENAME))
            return {}
        except OSError as e:
            print(str(e))
            return {}

mamy sobie konstruktor klasy, w tym konstruktorze do zmiennej _students_dict przypisujemy wartość zwróconą przez metodę get_students_from_json_file, w metodzie tej mogą zostać rzucone dwa wyjątki, i teraz mamy dwa wyjścia: złapać te wyjątki wewnątrz metody i na ich podstawie zwrócić jakąś tam wartość funkcji, jak w przykładzie powyżej, czy tam coś wypisać, albo wyjątków tych nie łapać w metodzie, zignorować je i złapać je dopiero w konstruktorze przy wywoływaniu metody, jak poniżej

    def __init__(self):
        try:
            self._students_dict = self.get_students_from_json_file()
        except json.JSONDecodeError:
            do something
        except OSError:
            do something

    def get_students_from_json_file(self):
        if not os.path.exists(self.STUDENTS_FILENAME): 
            return {}
        ewentualnie rzucone wyjątki zignorowane, łapię je w metodzie
        wywołującej
        

myślę że ten 2 sposób jest bardziej "naturalny" bo funkcja powinna jedynie zwracać wartość,  a nie zajmować się obsługą wyjątków, a jak to robić według was? Możecie polecić jakiś kompleksowy poradnik o poprawnej obsłudze wyjątków i zawierający jakieś konkretne dłuższe przykłady a nie 5 linijek na krzyż jak wszędzie w internecie?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 542 wizyt
pytanie zadane 9 lipca 2019 w Java przez magicznyukf Początkujący (260 p.)
0 głosów
1 odpowiedź 159 wizyt
pytanie zadane 26 kwietnia 2019 w C i C++ przez Sic Dyskutant (8,510 p.)
+1 głos
1 odpowiedź 248 wizyt
pytanie zadane 7 grudnia 2016 w C i C++ przez Kasztan Dyskutant (8,080 p.)

93,088 zapytań

142,046 odpowiedzi

321,473 komentarzy

62,435 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...