Manuseio de exceção no BizTalk 2006 R2
-
20-09-2019 - |
Pergunta
Eu tenho um projeto BizTalk 2006 R2 (usado com orientação do ESB 1) que estou chamando de orqutração para um método estático no código C#, esse método usa uma classe para carregar um arquivo de dados no corpo da mensagem xlang na parte 0 quando eu passo FilePath que não Não existe a classe interna, pegue a exceção, mas não anda -a (no método estático, há um bloco de captura e, na orqustration, há o verdadeiro manuseio da exceção)
O método estático é:
public static XLANGMessage LoadFileIntoMessage(XLANGMessage message, string filePath,Encoding encoding)
{
try
{
IStreamFactory sf = new FileStreamFactory(filePath,encoding);
message[0].LoadFrom(sf);
return message;
}
catch (Exception ex)
{
throw ex;
}
}
A classe que carrega o fluxo de arquivos é:
private class FileStreamFactory : IStreamFactory
{
string _fname;
Encoding _encoding;
public FileStreamFactory(string fname,Encoding encoding)
{
_fname = fname;
_encoding = encoding;
}
public Stream CreateStream()
{
try
{
StreamReader sr;
sr = new StreamReader
(
_fname,
_encoding
);
return sr.BaseStream;
}
catch (Exception ex)
{
throw ex;
}
}
}
Eu chamo o método estático da orquestração e espero capturar a exceção na minha orquestração após a aula e o método o obtém.
Solução
Não tenho certeza de qual é a pergunta real aqui ... Você está falando sobre como pegar a exceção na orquestração? Como fazê -lo entrar no sistema de manuseio de exceção do ESB ou o quê?
Para lidar com uma exceção em uma orquestração, você precisa usar uma forma de escopo (onde você coloca o código/formas que podem lançar a exceção) e, em seguida, adicionar um manipulador de exceção a ele (como um bloco de tentativa/captura).
Para as coisas do ESB, veja aqui: http://msdn.microsoft.com/en-us/library/ee250235(v=bts.10).aspx
Por fim, permita -me dizer: Por favor, não lide com exceções, como você já está fazendo no seu código. Você não deve pegar uma exceção apenas para jogá -lo novamente. É uma prática de programação muito ruim, prejudica o desempenho e também fará com que você perca o rastreamento original da pilha da exceção, dificultando o diagnóstico e a resolução de quaisquer problemas. Ver http://winterdom.com/2002/09/rethrowingExceptionsinc