domingo, 8 de marzo de 2015

Excepciones del paquete UTL_FILE

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