首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在try-catch-finally之后继续

在try-catch-finally之后继续
EN

Stack Overflow用户
提问于 2012-06-07 04:50:07
回答 5查看 1.4K关注 0票数 5

这可能听起来是个奇怪的问题,但我不明白...

假设我有一个应用程序,它连接到服务器来做一些事情。此连接可能会失败,并抛出一个我可以捕获的异常。

代码语言:javascript
复制
try {
  Client.connect();
} catch (System.Exception ex) {
  // Do some exception handling...
} finally {
  // Do some cleanup...
}

但是,如果连接成功,应用程序将继续...

代码语言:javascript
复制
try {
  Client.connect();
} catch (System.Exception ex) {
  // Do some exception handling...
} finally {
  // Do some cleanup...
}

// Talk to the server...

然而,在任何情况下都会执行“服务器对话”。异常是否发生并不重要。

如何确保只有在连接成功的情况下才会执行“服务器对话”?我必须在try语句中移动以下所有代码吗?编写这样的行为的干净方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-07 04:52:38

“与服务器对话”应该发生在try块中,紧跟在

代码语言:javascript
复制
Client.connect();
票数 13
EN

Stack Overflow用户

发布于 2012-06-07 04:54:18

最简单的方法就是设置一个布尔值。但是有很多方法可以解决这个问题。

代码语言:javascript
复制
bool connectionError = false;

try {
    // connect
} catch (...) {
    connectionError = true;
} finally {
   // whatever
}

if (!connectionError) {
    // talk to server.
}
票数 2
EN

Stack Overflow用户

发布于 2012-06-07 04:55:55

有另一个像clientConnected这样的变量,并在Client.Connect()之后将其设置为true。然后在与服务器通信之前,在clientConnected的try-catch检查之外。

避免在一次try-catch中做所有的事情。您应该对可能引发异常的不同操作使用单独的try-catch块,并尽可能多地捕获特定的异常。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10922070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档