显示神秘行为的功能

我正在开发与kotlin援助的android应用程序,但问题是基于纯粹的kotlin基础。 下面是显示一些不寻常的行为的功能:

 fun CatchThat(funct: () -> Unit){ try { funct() }catch (ex: Error){ ex.printStackTrace() } } 

当我在我的代码中使用它

 CatchThat { // Proprietary Code goes in here } 
  • 调试器无法正常工作(有时)
  • 专有代码根本不执行(有时)

为什么遇到这种行为,或者我得到一些错误的概念(也许lambdas )。 任何帮助或建议都热烈欢迎。(我是kotlin的tyro)

编辑我在做私有代码的事情。 我正在尝试调用一个Thread Pool ,然后调用一个Web活动。 这是最好的,我只能解释一下。 我为此感到抱歉。

我不确定它是否将问题整理出来,但是值得一试,因为所有的努力都是一成不变的(也因为你的语法没有错误)。 我猜如果调试器停在错误的行(或有时不工作),它通常意味着在代码缓存中的东西

尝试无效的想法缓存,并重新启动,如果你使用的想法当然。

在这之前

我也建议用最新版本更新Kotlin。

try / catch只能在当前线程上运行。 在你的代码片段中,如果在另一个线程中出现异常,try / catch将不起作用

例如:

 try { println("Hola mundo 1!") println(5 / 0) } catch (ex: Throwable) { println("Oups! $ex")// will be printed } try { Thread { println("Hola mundo 2!") println(5 / 0) }.start() } catch (ex: Throwable) { println("Oups! $ex")// won't be printed } println("Hola mundo 3!")//The exception thrown in the external thread don't kill the current thread 

有关调试问题,请参阅Android Studio线程调试