Bluetooth + Try Except
Arnau Sanchez
pyarnau en gmail.com
Vie Abr 18 21:23:21 CEST 2008
Renato Droguett escribió:
> try:
> print "------------> (S) Conectado a %s ----------" % (name)
> obex.sendfile(host, port, "images/iPAQ.JPG")
> except BluetoothError, e:
> print type(e)
>
> Obtengo:
>
> <type 'instance'>
>
Por curiosidad he bajado las fuentes de python-lightblue, y he aquí un
ejemplo de cómo lanza excepciones:
#python-lightblue/lightblue/_lightblue.py
try:
addr = _lightblueutil.hci_read_bd_addr(sock.fileno(), 1000)
except IOError, e:
raise _lightbluecommon.BluetoothError(str(e))
Yo diría que no es una forma especialmente acertada de hacerlo: crea sus
propias excepciones (hasta ahí bien), pero luego manda el error en forma
de cadena, con lo se pierde información.
En resumen, que como al except sólo le llega esa información, vas a
tener que parsear:
import re
getcode = lambda s: int(re.match(r"\((\d+),", str(e)).group(1))
try:
lightblue.obex.sendfile(host, port, filename)
except Exception, errstr:
code =getcode(errstr)
De juzgado de guardia, ¿pero qué alternativa hay sin tocar el código de
la librería?
(Todo esto sin contar que la excepción puede tener otra forma y el
parseo fallará.)
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es