Validar erro em fontes evitando que o smartclient caia.
Sabem aquela telinha que exibe um erro e depois derruba o smartclient?
Pois então, tem como exibir o erro mas continuar o processo até o ponto do erro sem derrubar o client.
Abaixo segue um exemplo para tratar esta situação:
Vou simular um erro numa consulta SQL, quando o sistema identificar o erro uma tela de aviso irá ser exibida, mas ao invés de finalizar a rotina, o sistema continuará até um certo ponto, sugiro que aprimore a tela de aviso para que o usuário te envie o erro.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
Static Function SuaFuncao() Local bBlock := ErrorBlock() //A função ErrorBlock define a atuação de um manipulador (handler) //de erros sempre que ocorrer um erro em tempo de execução. //Para isso, o manipulador de erro, é especificado com um bloco de código ErrorBlock( {|e| ChecErro(e)}) //A função ChecErro é padrão do sistema, era se encarrega //de receber o erro e exibir um alerta na tela para o usuario //Você pode criar sua propria tela de aviso, no final deste //fonte mostro a sintaxe desta funcao BEGIN SEQUENCE //O comando BEGIN SEQUENCE define uma estrutura sequencial //de controle dentro do fluxo de execução de um programa, //permitindo a sua interrupção na ocorrência de um determinado evento. BeginSql Alias TMPSB1 SELECT * FROM SB1010 WHERE D_E_L_E_T_ = '' AND XXX //Simulo o erro ORDER BY B1_COD EndSql /*SEU CODIGO*/ ErrorBlock(bBlock) RECOVER //RECOVER - Define um ponto de recuperação, //dentro do bloco de sequência, para o qual o //fluxo de execução será desviado após a //execução de um comando BREAK. ErrorBlock(bBlock) END SEQUENCE Return |
Para saber mais acesse o TND
Begin Sequence – http://tdn.totvs.com/display/framework/BEGIN+SEQUENCE+…+END
ErrorBlock – http://tdn.totvs.com/pages/viewpage.action?pageId=23888930
1 2 3 4 5 6 7 8 |
//Sintaxe da Função Static Function ChecErro(e) IF e:gencode > 0 Help( " ",1,"ERR_FORM",,e:Description,3,1) lRet:=.F. Endif Break Return(lRet) |