У меня есть некоторые реальные проблемы. Я очень надеюсь, что кто-то сможет мне помочь.UnhandledException в службе windows C#
У меня есть служба Windows, которая должна работать с определенной частотой. My Service связывается с некоторыми веб-сервисами наших поставщиков.
Моя проблема делает моя служба надежной, в случае, если эти услуги недоступны из-за поломки и т.д.
Я пытался контролировать это с помощью попытке поймать.
/***************************************************************************************************/
/* Code snippet: Unable to compile. (it says: The name 'xyz' does not exist in the current context)*/
try
{
var xyz = new xyz.ExternalService().GetRelevantData();
}
catch(Exception e)
{
...handle the exception
}
/* Code snippet: Unable to compile. (it says: The name 'xyz' does not exist in the current context)*/
/***************************************************************************************************/
Но компилятор не будет принимать это (он говорит: Имя «хуг» не существует в текущем контексте), Hense мне нужно другое решение. Я столкнулся с currentDomain.UnhandledException и хотел бы использовать эту функциональность. К сожалению, я не могу заставить это обработать исключение.
Может ли кто-нибудь помочь мне в решении?
Что касается кода ниже с делением на ноль, это моя интенция заменить деление с:
var xyz = new xyz.ExternalService().GetRelevantData();
Я верю, что бы решить мою проблему.
/*********************************************************************/
/* Code snippet: currentDomain.UnhandledException : Division by zero.*/
public void divisionbyzero()
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
int i = 0;
int m = 12;
double x = 0;
try
{
x = m * i;
}
catch (Exception e)
{
writeToLog(e.ToString());
}
x = m/i;
}
/*********************************************************************/
/* Code snippet: currentDomain.UnhandledException : Division by zero.*/
Я хотел бы получить исключение из «UnhandledException», когда деление выполнено. Но, к сожалению, этого не происходит.
Новый раздел с контекстом кода ниже: Я надеюсь, что это имеет смысл:
/*****************************************************************/
/****Code snippet: called from Windows service OnTimedEvent *****/
static void MyHandler(object sender, UnhandledExceptionEventArgs args)
{
Exception e = (Exception)args.ExceptionObject;
File.AppendAllText("C:\\lab\\logs\\log.txt", "" + e.Message + "");
}
private void writeToLog(Exception e)
{
File.AppendAllText("C:\\lab\\logs\\log.txt", "" + e.Message + "");
}
public void divisionbyzero() // this is called in Windows service in OnTimedEvent.
{
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
int ii = 0;
int mm = 12;
double xx = 0;
try
{
xx = mm * ii;
}
catch (Exception excep)
{
File.AppendAllText("C:\\lab\\logs\\log.txt", "" + excep.ToString() + "");
}
xx = mm/ii; // This is the exception I would like (currentDomain.UnhandledException) to handle
}
/****Code snippet: called from Windows service OnTimedEvent ************/
/***********************************************************************/
Я искал в Интернете: Этот парень имеет те же проблемы, вы можете прочитать: http://go4answers.webhost4life.com/Example/getting-appdomainunhandledexception-74589.aspx
_ "Но компилятор не примет этого" _ - в чем была ошибка? – MickyD
Это поможет, если вы разместите точный код и ошибку компилятора, но ...как слепое предположение: вы объявляете xyz (var xyz = ...) внутри try/catch, тогда он не виден вне его (или вы повторно объявляете его внутри try/catch, и вы уже объявили его снаружи). –
@AdrianoRepetti: Я не заново декларирую. Im только объявление один раз. Но Im только в состоянии сделать эту конкретную декларацию без попытки try-catch. Как я могу обработать исключение из-за сбоя при объявлении? –