Hay situaciones en las que el paquete UTL_FILE deja de funcionar debido problemas en los datos o problemas en la lectura de los archivos. Aparte de errores como NO_DATA_FOUND y VALUE_ERROR, UTL_FILE mantiene una lista de excepciones predefinidas que se enumeran a continuación.
INVALID_PATH
Lanzado si la ubicación del archivo no es válido
INVALID_MODE
Lanzado cuando un parámetro es no válido en FOPEN
INVALID_FILEHANDLE
Lanzado cuando identificador de archivo no es válido
INVALID_OPERATION
Lanzado cuando se intenta una operación no válida en un archivo
READ_ERROR
Lanzado cuando el sistema operativo falla en la operación completa de lectura
WRITE_ERROR
Lanzado cuando el sistema operativo falla en la operación completa de escritura
INTERNAL_ERROR
Lanzado debido a un error no especificado
CHARSETMISMATCH
Lanzado debido a la falta de coincidencia en los juegos de caracteres de FOPEN y PUTF
GET_LINE FILE_OPEN
Lanzado cuando el archivo ya está abierto
INVALID_MAXLINESIZE
Lanzado cuando MAX_LINESIZE cruza su rango es decir 1..32767
INVALID_FILENAME
Lanzado si el nombre de archivo no es válido y se intenta abrir
ACCESS_DENIED
Lanzado si el directorio no es accesible para el usuario
INVALID_OFFSET
Lanzado bajo la siguiente condiciones ABSOLUTE_OFFSET = NULL y RELATIVE_OFFSET = NULL, o ABSOLUTE_OFFSET <0, o de cualquier condición que provoca falla en el archivo
DELETE_FAILED
Lanzado cuando falla la operación de eliminación en el archivo
RENAME_FAILED
Lanzado cuando falla la operación de cambio de nombre en el archivo
Por ejemplo podemos hacer un bloque de excepciones que puede contener todos los controladores de excepciones de UTL_FILE. Puede utilizar RAISE_APPLICATION_ERROR para personalizar el mensaje de error a mostrar.
EXCEPTION
WHEN utl_file.invalid_path THEN
raise_application_error(-20001,'Directorio o
nombre de archivo invalido');
WHEN utl_file.invalid_mode THEN
raise_application_error(-20002,'Parametro
invalido al abrir archivo');
WHEN utl_file.invalid_filehandle THEN
raise_application_error(-20002,'Identificador de
archivo invalido');
WHEN utl_file.invalid_operation THEN
raise_application_error(-20003,'Operación
invalida');
WHEN utl_file.read_error THEN
raise_application_error(-20004,'Error de
lectura');
WHEN utl_file.write_error THEN
raise_application_error(-20004,'Error de
escritura');
WHEN utl_file.internal_error THEN
raise_application_error(-20006,'Error interno no
especificado');
END;
No hay comentarios:
Publicar un comentario