使用C#try/catch/finally表现得像if/else的最佳方法是什么?

Mar*_*vin 1 c# exception try-catch

我试图设置try/catch/finally表现得像if/else.我不确定做这件简单事情最优雅的方法.

public bool login()
{
bool isLoggedIn = false;
if (connectToServer(Path,username,password) ) // if successful
  {
     isLoggedIn = true;
  }
  else
  {

  }

return isLoggedIn;
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试使用例外的内容.

public bool login()
{
 bool isLoggedIn = false;

 try{
    connectToServer(Path,username,password)
    isLoggedIn = true; 
  }
  catch(myConnectionException ex)
  {


  }

return isLoggedIn;
}
Run Code Online (Sandbox Code Playgroud)

第二行"isLoggedIn"将被执行,尽管前一行在失败时引发异常.我的想法是问"如果抛出一个异常,我不希望该行被执行.我可以(我应该)在此时访问异常对象进行测试吗?(或者它是否超出范围?)我是一个前C编码器所以我试图"保持c#"来做一件简单的事情.我只想完善自己的技能并与"最佳实践"保持一致.感谢DTM

Dan*_*ite 10

不,它不会被执行.但是,这是不好的做法,因为处理异常需要进行昂贵的上下文切换.在特殊情况下,您应该只使用例外.

我会考虑将这两种方法结合起来.