Python codecs Library: Error Handler Functions
The purpose of codecs Library is Encoding and decoding i.e. conversion of the texts between different representations.
This module defines base classes for standard Python codecs (encoders and decoders) and provides access to the internal Python codec registry, which manages the codec and error handling lookup process.
Some of the functions in codecs module related to error handling in encoding and decoding are:
1. codecs.register_error(name, error_handler):
This function is used to register a custom error handling function with the name 'name'. The error handler argument will be called during encoding and decoding in case an error occurs, when the name is specified as the errors parameter.
For encoding, error handler will be called if the error argument given to the encoding function is the name of the custom error handler with which it has been registered. The error handler will be called with a UnicodeEncodeError instance. This instance contains information about the location of the error. Care must be taken while making an error handling function 'error-handler' that it must raise this instance, or any different exception, o return a tuple with the replacement for the unencodable part of the input and the position where encoding should continue and this replacement may be either string or bytes. If the replacement is bytes, the encoder will simply copy them to the output buffer, otherwise if the replacement is a string, the encoder will encode the replacement. Talking about the positive positions are properly understood that it is relative to the starting of the string and negative positions are relative to the end of the string. If there is an out of bound index position, the IndexError will be raised.
Decoding and translating also works similarly just in those cases the UnicodeDecodeError and UnicodeTranslateError is raised.
Another function for lookup of already registered error handlers.
When passed an error handler name, this function returns the error handler registered under the specified name.
It returns a LookupError if the handler under the specified name is not found.