这可能听起来是个奇怪的问题,但我不明白...
假设我有一个应用程序,它连接到服务器来做一些事情。此连接可能会失败,并抛出一个我可以捕获的异常。
try {
Client.connect();
} catch (System.Exception ex) {
// Do some exception handling...
} finally {
// Do some cleanup...
}但是,如果连接成功,应用程序将继续...
try {
Client.connect();
} catch (System.Exception ex) {
// Do some exception handling...
} finally {
// Do some cleanup...
}
// Talk to the server...然而,在任何情况下都会执行“服务器对话”。异常是否发生并不重要。
如何确保只有在连接成功的情况下才会执行“服务器对话”?我必须在try语句中移动以下所有代码吗?编写这样的行为的干净方法是什么?
发布于 2012-06-07 04:52:38
“与服务器对话”应该发生在try块中,紧跟在
Client.connect();发布于 2012-06-07 04:54:18
最简单的方法就是设置一个布尔值。但是有很多方法可以解决这个问题。
bool connectionError = false;
try {
// connect
} catch (...) {
connectionError = true;
} finally {
// whatever
}
if (!connectionError) {
// talk to server.
}发布于 2012-06-07 04:55:55
有另一个像clientConnected这样的变量,并在Client.Connect()之后将其设置为true。然后在与服务器通信之前,在clientConnected的try-catch检查之外。
避免在一次try-catch中做所有的事情。您应该对可能引发异常的不同操作使用单独的try-catch块,并尽可能多地捕获特定的异常。
https://stackoverflow.com/questions/10922070
复制相似问题