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

Python kontrola błędów except BaseException as e, e jest puste?

VPS Starter Arubacloud
0 głosów
61 wizyt
pytanie zadane 11 sierpnia 2020 w Python przez StrudzonyWedrowiec Nowicjusz (120 p.)
edycja 11 sierpnia 2020 przez StrudzonyWedrowiec

Cześć, ewidentnie coś mi umyka w tym temacie ponieważ próbuje złapać każdy błąd, Wszystkie z klasy Exception i dodatkowo KeyboardInterrupt do tego jeśli dobrze to zrozumiałem muszę użyć BaseException więc napisałem taki kod

#! /usr/bin/python3                                                                                                     
import sys                                                                                                              
from time import sleep
from reading_temp import temp_read
from mariadb_connection import connection, add_measurment, create_database, add_sensor
from tables import measurments, sensors
from pumps import  initPins, clean, pumpOn, pumpOff


def main():
    list_of_devices = '/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves'
    universal_path = '/sys/bus/w1/devices/'
    try:
        initPins()
        conn = None

        while(conn == None):
            conn = connection()
        create_database(conn)

        while(True):
            current_tempratures = temp_read(list_of_devices, universal_path)
            print(current_tempratures)

            for temp, sensor in current_tempratures:
                conn.execute(f'''insert into `{sensor}`(sensor_id, temprature)
                values((select id from sensors where sensor_name = '{sensor}'), {temp})''')

                if sensor == '28-5a1993d983ff':
                    tempCWU = temp
                    maxTemp = 50.0
                    hysteresis = 2.0
                    minTemp = maxTemp - hysteresis

                    if tempCWU <= minTemp:
                        pumpOn('CWU')


                    if tempCWU >= maxTemp:
                        pumpOff('CWU')
                        print('pump off')




            sleep(30)
        clean()
    except BaseException as e:
        print(e)
        clean()

if __name__ == '__main__':
    main()

Chciałbym żeby błędy zapisywały się do pliku ale nie mogę zapisywać jeśli nie mam żadnej wiadomości z błędem, i tutaj moje pytanie co źle zrozumiałem i co muszę zrobić aby dostać moją upragnioną wiadomość. Używam BaseExcaeption żeby zapisywać ręczne wyłączenie programu.

EDIT: Tak mnie jeszcze naszło, czasami read_temp zwróci głupotę (niestety taki urok podpiętej elektroniki) czyli wartość np 12667 która nie mieści się w widełkach temperatury w bazie max 4 cyfry, czy jest możliwość złapania takiego błędu, zapisać do jakiegoś log'a i kontynuować z kodem? 

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

Podobne pytania

0 głosów
1 odpowiedź 781 wizyt
0 głosów
1 odpowiedź 2,405 wizyt
pytanie zadane 29 sierpnia 2017 w C i C++ przez Mithriandil Początkujący (250 p.)
0 głosów
2 odpowiedzi 266 wizyt
pytanie zadane 25 stycznia 2017 w C i C++ przez Akiro Bywalec (2,910 p.)

93,004 zapytań

141,969 odpowiedzi

321,248 komentarzy

62,341 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!

...