PROGRAMA PAROU DE RESPONDER - INTERMITENTE
Boa tarde pessoal
Fiz um gerenciador para trabalhar no S@T em C#. Porem algo estranho esta acontecendo e não sei como resolver.
Hora funciona normal, porem do nada acontece algo e o sistema para de funcionar sem dar nenhuma excessão nem nada deste tipo.
Ja fiz vários Try Catch em pontos onde imaginei que algo poderia acontecer e nada.
Uso banco de dados MySQL com Mysql.Data.dll
Alguem sabe o que pode ser ?
Fiz um gerenciador para trabalhar no S@T em C#. Porem algo estranho esta acontecendo e não sei como resolver.
Hora funciona normal, porem do nada acontece algo e o sistema para de funcionar sem dar nenhuma excessão nem nada deste tipo.
Ja fiz vários Try Catch em pontos onde imaginei que algo poderia acontecer e nada.
Uso banco de dados MySQL com Mysql.Data.dll
Alguem sabe o que pode ser ?
Detalhe que comigo no desenvolvimento não acontece nada.
Acabei de fazer um log em todas funções do meu sistema.
Cheguei a conclusão que o erro esta nesse metodo:
Tudo me leva a quer que é na linha [Ô]While (dr.read())[Ô], pois logo abaixo ja tem outra gravação do log e não chega lá.
O estranho é que hora funciona e hora não, fechei o gerenciador, retransmiti o cupom e validou normal. Alguem pode me ajudar por favor? Estou me desesperando ja pois tenho varios sistemas que faço da mesma forma e não da esse problema.
PS: A versão do Mysql.Data.dll é a mesma
Cheguei a conclusão que o erro esta nesse metodo:
public clsOrcamento GetOrc(long codorc1)
{
auditoria.GravaAuditoria([Ô]GetOrc([Ô] + codorc1.ToString () + [Ô])[Ô]);
clsOrcamento _return = null;
string retornoConexao;
databases conecta = new databases();
retornoConexao = conecta.conectaMySql();
// abre a instancia do comando SQL
if (retornoConexao != [Ô]Conectou[Ô])
{
return null;
}
else
{
try
{
this.sql = [Ô]select * from orcamento where codorc=@codorc[Ô];
auditoria.GravaAuditoria(this.sql.Replace([Ô]@codorc[Ô],codorc1.ToString ()));
using (MySqlCommand cmd = new MySqlCommand(this.sql, conecta.conexao))
{
cmd.Parameters.AddWithValue([Ô]@codorc[Ô], codorc1);
using (MySqlDataReader dr = cmd.ExecuteReader())
{
if (dr.HasRows)
{
auditoria.GravaAuditoria([Ô]Achou dados[Ô]);
_return = new clsOrcamento();
auditoria.GravaAuditoria([Ô]Lendo dados[Ô]);
while (dr.Read())
{
Tudo me leva a quer que é na linha [Ô]While (dr.read())[Ô], pois logo abaixo ja tem outra gravação do log e não chega lá.
O estranho é que hora funciona e hora não, fechei o gerenciador, retransmiti o cupom e validou normal. Alguem pode me ajudar por favor? Estou me desesperando ja pois tenho varios sistemas que faço da mesma forma e não da esse problema.
PS: A versão do Mysql.Data.dll é a mesma
Certamente é um bug dentro do seu próprio sistema que passou despercebido.
Oi JABA, obrigado pela resposta.
Mas um bug que hora funciona e hora não funciona ? Não consegue me ajudar a achar, esta estranho isso. Verifiquei as propriedades do projeto, esta x86(pensei que poderia estar dando incompatibilidade). Nem com o Try Catch nao evita esse problema.
Mas um bug que hora funciona e hora não funciona ? Não consegue me ajudar a achar, esta estranho isso. Verifiquei as propriedades do projeto, esta x86(pensei que poderia estar dando incompatibilidade). Nem com o Try Catch nao evita esse problema.
Coloque um try catch em todo metodo e dispare uma nova excecao quando capturar o erro, senão não vai acontecer nada se houver erro.
ex:
ex:
public clsOrcamento GetOrc(long codorc1)
{
try
//todo o codigo do metodo
catch
{
throw;
}
}
Mesmo com o try que coloquei naquele ponto o sistema para de responder, ele nao [Ô]pula[Ô] o erro.
Coloquei o que voce falou e vou mandar ao cliente para testar.
Coloquei o que voce falou e vou mandar ao cliente para testar.
Citação:public clsOrcamento GetOrc(long codorc1)
Não se esqueça que no local onde você chama esse metodo, a exceção pode não estar sendo disparada também. Ou seja, se tiver um erro dentro desse metodo, o objeto que o está chamando vai captura-lo, e se lá dentro tiver um catch, pode não estar deixando o erro chegar ao usuário.
eSTOU FAZENDO ASSIM AO CHAMAR ESTE METODO
clsOrcamento venda = null;
// criamos nessa funçao o arquivo da venda o arquivo da venda
try
{
venda = new bdsOrcamento().GetOrc(codorc);
}
catch (Exception erro)
{
venda = null;
}
Citação:clsOrcamento venda = null;
// criamos nessa funçao o arquivo da venda o arquivo da venda
try
{
venda = new bdsOrcamento().GetOrc(codorc);
}
catch (Exception erro)
{
venda = null;
}
Acho que esse é o seu problema. Ele captura o erro e o retém pra si. Faça assim pra ver como ele vai se comportar:
clsOrcamento venda = null;
// criamos nessa funçao o arquivo da venda o arquivo da venda
try
{
venda = new bdsOrcamento().GetOrc(codorc);
}
catch (Exception erro)
{
venda = null;
[txt-color=#e80000] throw;[/txt-color]
}
JABA, vou tentar isso tambem. Porém é algo que nunca aconteceu. Normalmente o sistema em uma excessao nao tratada retorna um Crash com detalhes de onde deu o problema e também com opção de encerrar a aplicação ou continuar a execução.
Isso que esta me [Ô]encafifando[Ô].
Isso que esta me [Ô]encafifando[Ô].
Tópico encerrado , respostas não são mais permitidas