Pagina 1 di 1

Python: eccezioni.

Inviato: mar 3 giu 2014, 15:13
da rik70
Ciao di nuovo a tutti, come butta?

Sto provando a scrivere un programma in python - per la precisione un plugin per XBMC - e volevo chiedervi un consiglio.

In pratica vorrei fare in modo che il programma ad un certo punto s'interrompa se si verifica una data eccezione. Qual'è il modo migliore per farlo? Io mi stavo buttando sulla funzione sys.exit()

Es:

Codice: Seleziona tutto

import sys
import urllib
import urllib2

try:
    link = 'http://indirizzo_web_inesistente/'
    req = urllib2.Request(link)
    req.add_header('User-agent', 'Mozilla/5.0')
    response = urllib2.urlopen(req)
    url = response.read()
    response.close()
except:
    print "Errore, bla bla bla"
    sys.exit(0)

# altro codice
Son sicuro che è sbagliato, giusto?


Grazie in anticipo.

Ciao

P.s.
Tenete presente che parlate con un totale neofita.

Re: Python: eccezioni.

Inviato: mer 4 giu 2014, 15:59
da lablinux
cosi ad occhio e croce va bene per uno script bash, magari eviterei di restituire 0, che indica al sistema tutto ok.
Ma non so come funzionanao gli plugin per xbmc, ti conviene chiedere in un forum specializzato in xbmc o trovare qualche plugin per fare copia&incolla

Re: Python: eccezioni.

Inviato: mer 4 giu 2014, 17:18
da rik70
lablinux ha scritto:cosi ad occhio e croce va bene per uno script bash
Avevo lo stesso dubbio e hai colto nel segno.

Ho verificato infatti che anggiungendo 'print url' al codice - subito dopo il commento finale - ed eseguendolo sull'interprete python, restituisce l'errore:
`NameError: name 'url' is not defined`.

Invece incollandolo su un file 'test.py' e lanciandolo da shell con `python test.py`, 'esce' senza errori con questo output:
`Errore, bla bla bla`.

Su XBMC invece pare funzionare, o meglio: non viene notificato il popup dell'errore dello script, anche se il log di xbmc riporta:

Codice: Seleziona tutto

-->Python Interpreter Initialized<--
17:03:41 T:3034634032   ERROR: GetDirectory - Error getting plugin://plugin.video.test/
17:03:41 T:3034634032   ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.video.test/) failed
Vabbè, proverò a sbirciare il codice altrui, anche perché mi sa che è così che s'impara, giusto? :)

Graze, ciao.