显示神秘行为的功能
我正在开发与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线程调试