Ritornare ad eseguire il try dopo che entra in except

di il
2 risposte

Ritornare ad eseguire il try dopo che entra in except

Come dice la discussione ho il problema che devo eseguire nuovamente l'istruzione dentro al try dopo che ho gestito una eccezione con except e non so proprio come fare. Dopo che ha gestito il primo except blocca il calcolo giustamente, ma io dovrei continuare a calcolare con il metodo del try :(

Questo è lo stralcio di codice che mi ha portato a questo dubbio. 

for i in range(1,len(RL)-2,3):  #angle every three points
    #condition for having a measurable angle
    if (RL[i][1] < RL[i-1][1]) and (RL[i][1] < RL[i+1][1]):
        try:
            primo_ang = -(math.atan((RL[i][1]-RL[i-1][1])/(RL[i][0]-RL[i-1][0])))*180/math.pi
            secondo_ang = 180-(math.atan((RL[i+1][1]-RL[i][1])/(RL[i+1][0]-RL[i][0])))*180/math.pi
            angolo = abs(secondo_ang-primo_ang)    
            print(angolo)
            
        except ZeroDivisionError:
            primo_ang = 90
            secondo_ang = 180-(math.atan((RL[i+1][1]-RL[i][1])/(RL[i+1][0]-RL[i][0])))*180/math.pi
            angolo = abs(secondo_ang-primo_ang)    
            print(angolo)
        
            
            
       # except ZeroDivisionError:
       #     primo_ang = -(math.atan((RL[i][1]-RL[i-1][1])/(RL[i][0]-RL[i-1][0])))*180/math.pi
       #     secondo_ang = 90
       #     angolo = abs(secondo_ang-primo_ang)    
       #     print(angolo)

La parte commentata in fondo è un plus per gestire un secondo errore che però è sempre una divisione per zero ma va gestita diversamente dalla prima, se riuscite ad aiutarmi anche con quest'ultima cosa ve ne sarei grato. Saluti a tutti.

2 Risposte

  • Re: Ritornare ad eseguire il try dopo che entra in except

    12/09/2023 - Fabiux ha scritto:


    Dopo che ha gestito il primo except blocca il calcolo giustamente, ma io dovrei continuare a calcolare con il metodo del try :(

    Quando usi except, l'errore viene “assorbito” in quanto “gestito”, quindi il codice prosegue normalmente, a meno che non se ne verifichi un altro ancora.

    Credo che si debba chiarire meglio la questione.

  • Re: Ritornare ad eseguire il try dopo che entra in except

    Ma che poi, è davvero necessario gestire l'eccezione? Non sarebbe più comodo/efficiente impostare

    if RL[i][0] == RL[i-1][0]:
    	primo_ang = 90
    else:
    	primo_ang = -(math.atan((RL[i][1]-RL[i-1][1])/(RL[i][0]-RL[i-1][0])))*180/math.pi

    La divisione per zero non può avvenire a meno che quei valori non siano uguali… Similmente per la seconda variabile.

Devi accedere o registrarti per scrivere nel forum
2 risposte