CoroutineExceptionHandler Kdoc说:
默认情况下,当未安装处理程序时,未安装异常的处理方式如下: 如果异常为CancellationException,则忽略它(因为这是取消运行协同线的假定机制) 否则: 如果上下文中有作业,则调用Job.cancel; 否则,通过CoroutineExceptionHandler和当前线程的Thread.uncaughtExceptionHandler找到的所有实例都会被调用。
还没有提供关于“通过CoroutineExceptionHandler发现的所有ServiceLoader实例”的详细信息( Kotlin只接触冰山一角并不少见)。这是怎么做的?
我知道Thread.uncaughtExceptionHandler的事,这不是问题所在。
发布于 2020-09-19 05:18:50
在这里,基于@amamin的评论和使用Java平台创建可扩展应用程序的文章,我们找到了答案。
要注册提供程序,必须在JAR文件的META/services目录中创建一个提供程序配置文件。配置文件名应该是服务类型的完全限定的二进制名称。二进制名称只是一个完全限定的类名,在这个类名中,名称的每个组件都由一个。字符,嵌套类由$字符分隔。 例如,如果您实现了META-INF/services/com.example.dictionary.spi.Dictionary服务类型,那么您应该创建一个com.example.dictionary.spi.Dictionary文件。在文件中的单独行中,列出具体实现的完全限定二进制名称。
回到我的问题上,我需要创建一个带有一行的META-INF/services/kotlinx.coroutines.CoroutineExceptionHandler文件,即实现的FQN。
https://stackoverflow.com/questions/63949942
复制相似问题