kopia lustrzana https://github.com/micropython/micropython
3c4bfd1dec
This commit adds the errno attribute to exceptions, so code can retrieve errno codes from an OSError using exc.errno. The implementation here simply lets `errno` (and the existing `value`) attributes work on any exception instance (they both alias args[0]). This is for efficiency and to keep code size down. The pros and cons of this are: Pros: - more compatible with CPython, less difference to document and learn - OSError().errno will correctly return None, whereas the current way of doing it via OSError().args[0] will raise an IndexError - it reduces code size on most bare-metal ports (because they already have the errno qstr) - for Python code that uses exc.errno the generated bytecode is 2 bytes smaller and more efficient to execute (compared with exc.args[0]); so bytecode loaded to RAM saves 2 bytes RAM for each use of this attribute, and bytecode that is frozen saves 2 bytes flash/ROM for each use - it's easier/shorter to type, and saves 2 bytes of space in .py files that use it (for each use) Cons: - increases code size by 4-8 bytes on minimal ports that don't already have the `errno` qstr - all exceptions now have .errno and .value attributes (a cpydiff test is added to address this) See also #2407. Signed-off-by: Damien George <damien@micropython.org> |
||
---|---|---|
.. | ||
_thread.rst | ||
btree.rst | ||
builtins.rst | ||
cmath.rst | ||
esp.rst | ||
esp32.rst | ||
framebuf.rst | ||
gc.rst | ||
index.rst | ||
lcd160cr.rst | ||
machine.ADC.rst | ||
machine.ADCWiPy.rst | ||
machine.I2C.rst | ||
machine.Pin.rst | ||
machine.RTC.rst | ||
machine.SD.rst | ||
machine.SDCard.rst | ||
machine.SPI.rst | ||
machine.Signal.rst | ||
machine.Timer.rst | ||
machine.TimerWiPy.rst | ||
machine.UART.rst | ||
machine.WDT.rst | ||
machine.rst | ||
math.rst | ||
micropython.rst | ||
network.CC3K.rst | ||
network.WIZNET5K.rst | ||
network.WLAN.rst | ||
network.WLANWiPy.rst | ||
network.rst | ||
pyb.ADC.rst | ||
pyb.Accel.rst | ||
pyb.CAN.rst | ||
pyb.DAC.rst | ||
pyb.ExtInt.rst | ||
pyb.Flash.rst | ||
pyb.I2C.rst | ||
pyb.LCD.rst | ||
pyb.LED.rst | ||
pyb.Pin.rst | ||
pyb.RTC.rst | ||
pyb.SPI.rst | ||
pyb.Servo.rst | ||
pyb.Switch.rst | ||
pyb.Timer.rst | ||
pyb.UART.rst | ||
pyb.USB_HID.rst | ||
pyb.USB_VCP.rst | ||
pyb.rst | ||
uarray.rst | ||
uasyncio.rst | ||
ubinascii.rst | ||
ubluetooth.rst | ||
ucollections.rst | ||
ucryptolib.rst | ||
uctypes.rst | ||
uerrno.rst | ||
uhashlib.rst | ||
uheapq.rst | ||
uio.rst | ||
ujson.rst | ||
uos.rst | ||
ure.rst | ||
uselect.rst | ||
usocket.rst | ||
ussl.rst | ||
ustruct.rst | ||
usys.rst | ||
utime.rst | ||
uzlib.rst | ||
wipy.rst |