我有一些真正的麻烦。我真的希望有人能够帮助我。
我有一个Windows服务,应该以某个频率运行。 我的服务与供应商的一些网络服务进行通信。
我的问题是让我的服务更健壮,以防这些服务因崩溃等原因而无法使用。
我试图用try catch来控制它。
/***************************************************************************************************/
/* 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)*/
/***************************************************************************************************/
但是编译器不会接受这个(它说:' xyz'在当前上下文中不存在),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
答案 0 :(得分:2)
您需要以下代码来创建实例:
var xyz = new xyz().ExternalService().GetRelevantData();
现在xyz
将被视为一项功能!我猜你在你的代码中有这个功能!
然后按如下所示:
try
{
var xyz = new xyz().ExternalService().GetRelevantData();
}
catch(Exception e)
{
...handle the exception
}
答案 1 :(得分:1)
从你的评论中看,这是你的问题:
try
{
var xyz = new xyz.ExternalService().GetRelevantData();
}
catch(Exception e)
{
//but I want to use xyz here
...handle the exception
}
因此,请在更高的范围内定义xyz
,以便在catch
中显示;
var xyz = new Xyz();
try
{
var someValue = xyz.DoSomething();
}
catch(Exception e)
{
//xyz is still visible here.
}
答案 2 :(得分:0)
问题解决了:
long long int
感谢您的所有帖子: - )。