Closed7

android で coroutines 内で例外が起きたときにエラーメッセージを表示したい

tkttkt

永遠に解法がわからなかったけど、

findNavController().navigate()

これ書くの忘れて

HogeDirection.toMoge()

これだけ書いてただけだった…
どうして

tkttkt

永遠に解法がわからなかったけど、

findNavController().navigate()

これ書くの忘れて

HogeDirection.toMoge()

これだけ書いてただけだった…
どうして

tkttkt
HogeDirection.toMoge()

これだけ書いて、
「ダイアログが出ない…UIスレッドで動いてないの…?どうして…?」
ってなってた

tkttkt

結果書いたのはこれだけ

class HogeFragment : Fragment() {
    private lateinit var binding: HogeBinding
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        binding = HogeBinding.inflate(inflater)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        binding.button.setOnClickListener {
            coroutineFunc()
        }
    }

    private fun coroutineFunc() =
        viewLifecycleOwner.lifecycleScope.launch(handler) {
            throw Exception("Fatal Exception!!")
        }

    private val handler = CoroutineExceptionHandler { _, e ->
        try {
            throw e
        } catch (e: Exception) {
            findNavController().navigate(HogeDirections.actionToErrorDialog(e.message))
        }
    }
}
tkttkt

CoroutineExceptionHandler の中で再スローするのが微妙な気がするので書き換えたい

このスクラップは2021/05/06にクローズされました