2017-08-30 8 views
0

kotlin援助でアンドロイドアプリケーションを開発していますが、質問は純粋なkotlinファンダメンタルズに基づいています。以下は、いくつかの異常な動作を示している機能です。不思議な振る舞いを示す機能

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

私は私のコードでそれを使用

CatchThat { 
// Proprietary Code goes in here 
} 
  • デバッガは(時々)適切
  • 独自に動作しません。コードがまったく実行されない(時々)

なぜその動作が発生するのですか、いくつかのコンセプトが間違っています(たぶんlambdas)。すべてのヘルプや提案を心から歓迎している。

EDIT私は独自のコードでやっている事(私はkotlinで新米をしています)。 私はThread Poolを呼び出そうとしていますが、これはWebアクティビティを呼び出しています。これは最高ですし、私がそれについて説明できるすべてです。ごめんなさい。

+0

このコードサンプルは動作します...どのバージョンのkotlinを使用していますか、あなたが提供しているプロプライエタリコードは何ですか? – Piwo

+0

出力が出ていませんか? – crgarridos

+0

'Kotlin 1.1.2'と申し訳ありませんが、コードは** Proprietary ** – Mandy8055

答えて

1

に見て私はないですそれが問題を整理するかどうかは確かですが、すべての努力が静脈に入った(そしてあなたの構文に誤りがないので)試してみる価値があります。 デバッガが間違った行で停止している(または動作しないことがある)と思われる場合、通常は というコードキャッシュ内で何かが壊れていることを意味します。

もちろん、アイデアを使用している場合は、アイデアキャッシュを無効にして再起動してください。

そして

私も最新バージョンでKotlinを更新することをお勧めしますことをやって前に。

+0

ありがとうございました!最初の太字の行は機能しませんが、最後の行、つまり最新バージョンの「1.1.3」に更新すると問題が解決します。本当にありがとうございます – Mandy8055

3

try/catchは、現在のスレッドでのみ機能します。あなたのスニペットでは、別のスレッドでいくつかの例外ocourrs場合、の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 threaded debugging

+0

答えを@crgarridosたくさんありがとう、それはあなたの貴重な時間を与えるが、時々それは正しい出力を与える、デバッガは正常に動作し、時にはコードも実行されますか?** – Mandy8055

+0

ちょうだい、それはあなたのコードのために変えることができます、あなたはスレッドプールを持っているので、実行は非同期です。そして、あなたは1つまたは別のスレッドで「ランダムに」例外を持つことができます – crgarridos

+0

多分!しかし、あなたの貴重な時間と+1を与えてくれてありがとう!!!!私は確かに私は正しい修正を得るだろうと言及します – Mandy8055

関連する問題