quarta-feira, dezembro 29, 2004

Novo tratamento de exceção no PowerBuilder 8

O PowerBuilder 8 possibilita ao desenvolvedor tratar exceções para evitar erros de sistema.
O Tratamento de exceção possui os seguintes comandos
Try - Inicio do bloco da exceção
Throw - Dispara uma exceção
Catch - Tratamento da exceção. As exceções mais comuns são as seguintes:
* throwable - Tratamento mais genérico, englobando todos os erros * Exception - Exceções criadas pelo usuário e herdadas do Throwable
* RuntimeError - erros de Runtime do PowerBuilder e herdado do Throwable * NullObjectError - Referencia nula para objetos e herdado do RuntimeError * DivideByZeroError - Divisão por zero e herdado do RuntimeError * DWRuntimeError - Erros em comandos da DataWindow e herdado do RuntimeError * OLERuntimeError - Erros em comandos de Objetos OLE e herdado do RuntimeError * CORBASystemException - Erros em comando de objetos CORBA (muito utilizado no servidor de Internet da Sybase) e herdado do RuntimeError
Finally - Evento sempre executado quando ocorre a saída do bloco de exceção
End Try - Finaliza o Bloco de Exceção

Abaixo existe um exemplo de como utilizar o tratamento de erro. Qualquer dúvida, me encontro a disposição.

string ls_Description,ls_server,ls_DBMS,ls_AutoCommit, ls_db,ls_DBParm, ls_LogPass, ls_LogIdstring ls_erro,ls_par[5]string parm[5]long ll_pos_ant, ll_pos, i
exception lex_errolex_erro = create exception
Try

is_conexao = as_conecta
ll_pos = pos(as_conecta,';') i=0 ll_pos_ant = 1 do while ll_pos > 0 i++ parm[i] = mid(as_conecta,1,ll_pos - 1) ls_par[i] = mid(parm[i],pos(parm[i], '=') + 1,len(parm[i]) - pos(parm[i], '=')) ll_pos_ant = ll_pos as_conecta = mid(as_conecta,ll_pos + 1) ll_pos = pos(as_conecta,';') loop

parm[5] = as_conecta ls_par[5] = mid(parm[5],pos(parm[5], '=') + 1,len(parm[5]) - pos(parm[5], '='))

ls_Description = 'attdsn' + is_sistema ls_DBMS = 'OLE DB' ls_AutoCommit = 'False' ls_server = ls_par[2] uf_debug("Ancestral - uf_inicializa_conexao - 30","ls_server "+ls_server)

is_servidor = ls_server ls_db = ls_par[3]
ls_erro = uf_registry(ls_Description,ls_server,ls_LogId,ls_db) if ls_erro <> '' then throw lex_erro end if
ls_erro = uf_conectabd(ls_Description, ls_db, ls_LogId, "ConnectString='DSN=attdsn'")
if ls_erro <> '' then throw lex_erro end if

catch (runtimeerror lrt_trata_erro_runtime) uf_setabort() return uf_trataerro( 99000, ls_erro)catch (exception lex_tratar_erro) uf_setabort() return uf_trataerro( 99000, ls_erro)catch (throwable lth_trata_erro_generico) uf_setabort() ls_erro = lth_trata_erro_generico.getmessage() return uf_trataerro( 99000, ls_erro)finally destroy lex_erroend try

return ''

Nenhum comentário: