【问题标题】:in a try-block, how to do sth. if no exception occurs ? obj-c在一个try-block中,如何做某事。如果没有异常发生?对象-c
【发布时间】:2011-03-08 04:37:48
【问题描述】:

在标准的 try-catch-error-block 中,如果没有抛出错误,我如何建议程序只做某事?

例如,如果我想为基于 ip 的东西配置代理,并且如果一切正常,它应该使按钮变灰。

【问题讨论】:

    标签: objective-c exception exception-handling try-catch


    【解决方案1】:

    好的

    @约塞连 不工作。

    @PeterWong 你的作品。编译器无法解释 if(noerror),它必须是 if(noerror==false)

    【讨论】:

      【解决方案2】:

      您只需将其放入try 块中,但在可能抛出的语句之后。如果是这样,控制流将转移到 catch 块并跳过后面的指令。 try 不应该这样使用。

      当然,如果您有多个可能引发异常的语句,并且只是将所有内容都放在一个毛茸茸的大全局 try 块中,那么确定正确的位置就变得更加困难。这就是为什么巨大的全局 try 块是反模式的原因之一。

      【讨论】:

      • 我认为这是个主意,我还没有找到
      • 所以,我试过了。不起作用,即使有异常也会调用下一条指令
      • 好吧,这不是异常的工作方式。请发布您的实际代码 - 我们一定遗漏了一些东西。 (例如,如果您在 try 块中调用外部函数,其中一个可能会打印一些东西的堆栈跟踪,使您看起来像是收到了异常。但如果它确实到达 your 块,它将被终止.
      【解决方案3】:

      我会这样做(c#,但这个想法可以在其他地方重用)

      try {
       try {
       // some code
       }
       catch 
       { throw; }
      
      
       // code, done only if there was no error
      }
      catch {
       // read the exception.
      }
      

      【讨论】:

        【解决方案4】:

        先设置一个变量为真,即noError = true

        如果发生任何错误,请将其设置为 false

        【讨论】:

        • BOOL noerror = TRUE; @try { [自我设置:通讯器]; } @catch (ICEException * ex) { noerror = FALSE; [self performSelectorOnMainThread:@selector(exception:) withObject:[ex description] waitUntilDone:NO]; [通讯器破坏]; self.communicator = nil; initCallBackButton.hidden = FALSE; } if (noerror) { initCallBackButton.hidden = TRUE; //wenn die session aufgebaut ist, blende den button aus } 至少在这个块中,它不起作用,但我真的不知道,为什么?这个简单的想法听起来至少是正确的
        • 其实我不知道objective-c的语法,但我猜是对的
        猜你喜欢
        • 1970-01-01
        • 2011-05-08
        • 2018-05-23
        • 1970-01-01
        • 2012-08-06
        • 1970-01-01
        • 2015-10-11
        • 2019-03-02
        • 2015-12-14
        相关资源
        最近更新 更多