当前位置: 首页 > 知识库问答 >
问题:

获取RuntimeException即使在尝试catch时

裴俊雅
2023-03-14
try {                
     AlgorithmParameterSpec spec = null;
       synchronized (lock) {
        // ...
        KeyPairGenerator generator = KeyPairGenerator.getInstance(RSA_ALGORITHM, PROVIDER_ANDROID_KEY_STORE);
        generator.initialize(spec);
        generator.generateKeyPair();                
      }
        } catch (Throwable e) {
            Logger.e("Exception " + e.getMessage() + " occurred",e);
        }

在SDK版本<23的设备上,java.security.providerexceptiongenerator.generateKeypair();和应用程序崩溃!

我的问题是:如果我有try/catch,为什么应用程序会崩溃?

答案如下:为什么我们不必向RuntimeException添加try-catch?

8:28:39.700 9359-10032/com.hoo.app.dev E/art: JNI DETECTED ERROR IN APPLICATION: JNI FindClass called with pending exception 'java.security.ProviderException' thrown in unknown throw location 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: in call to FindClass 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: from byte[] com.google.android.gms.org.conscrypt.NativeCrypto.EVP_DigestSignFinal(com.google.android.gms.org.conscrypt.NativeRef$EVP_MD_CTX) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: "pool-7-thread-1" prio=5 tid=66 Runnable 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: | group="main" sCount=0 dsCount=0 obj=0x12da8400 self=0x7f87147800 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: | sysTid=10032 nice=0 cgrp=default sched=0/0 handle=0x7f9206a000 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: | state=R schedstat=( 60197617 2542383 67 ) utm=6 stm=0 core=1 HZ=100 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: | stack=0x7f646fe000-0x7f64700000 stackSize=1036KB 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: | held mutexes= "mutator lock"(shared held) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.google.android.gms.org.conscrypt.NativeCrypto.EVP_DigestSignFinal(Native method) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.google.android.gms.org.conscrypt.OpenSSLSignature.engineSign(:com.google.android.gms:224) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.security.Signature$SignatureImpl.engineSign(Signature.java:672) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.security.Signature.sign(Signature.java:381) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.android.org.bouncycastle.x509.X509Util.calculateSignature(X509Util.java:248) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.android.org.bouncycastle.x509.X509V3CertificateGenerator.generate(X509V3CertificateGenerator.java:434) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.android.org.bouncycastle.x509.X509V3CertificateGenerator.generate(X509V3CertificateGenerator.java:412) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at android.security.AndroidKeyPairGenerator.generateKeyPair(AndroidKeyPairGenerator.java:133) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.security.KeyPairGenerator$KeyPairGeneratorImpl.generateKeyPair(KeyPairGenerator.java:276) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.myprog.MyKeystoreWrapper.createKey(SourceFile:147) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: - locked <0x2b1e5aea> (a java.lang.Object) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.myprog.MyKeystoreWrapper.createFirstInstallData(SourceFile:70) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.myprog.MyProgLib.getReInstallData(SourceFile:675) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.myprog.MyProgLib.sendTrackingWithEvent(SourceFile:1110) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.myprog.MyProgLib.access$600(SourceFile:72) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at com.myprog.MyProgLib$d.run(SourceFile:2253) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:422) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:152) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:265) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
01-13 18:28:39.700 9359-10032/com.hoo.app.dev E/art: at java.lang.Thread.run(Thread.java:818)

行:com.myprog.mykeystoreWrapper.createKey(SourceFile:147)指向我的方法

共有1个答案

华英睿
2023-03-14

ProviderException:

提供程序异常(如错误配置错误或不可恢复的内部错误)的运行时异常,提供程序可以将其子类化,以引发特定于提供程序的专用运行时错误。

它指的是:不可恢复的内部错误。
在这种情况下,它意味着捕获异常是无用的,因为错误将停止应用程序
您可能在这种情况下。

 类似资料:
  • 我对CompletableFuture是个新手,我想调用一个可以引发异常的方法MetadataLoginutil::Login。然而,下面的代码没有编译,尽管我已经‘异常’编写。它说我必须在try&catch中包装metadataloginutil::login'。 请指教。前面谢谢!

  • 问题内容: 最近,我遇到了一位程序员的代码,其中他在catch中有一条try-catch语句! 请原谅我无法粘贴实际代码,但是他所做的与以下内容类似: 我个人认为这是我见过的最差的代码!以1到10的比例,您认为我应该多久才能动一下脑子,还是我反应过度? 编辑:他实际上在抓捕中所做的事情,他正在执行一些操作,这些操作在初始尝试失败时可以/应该执行。我的问题是拥有干净的代码和可维护性。将异常从第一个c

  • 我有下面的代码: 联机System.NullReferenceException:DownloadLinkList.Add(Item.SelectSingleNode(“.//a”).Attributes[“href”].Value); 怎样才能妥善处理,让它不再崩溃?我的印象是,它应该只是跳过前面。 使用也不是一个选项,因为我仍然需要没有所需的的某个页面的信息。

  • 在Eclipse3.6中运行代码时,我在下面的语句中得到了一个。1: 我读过类似问题的帖子,并尝试过答案,但运气不佳,包括: 使用绝对路径 使用各种相对路径 将gif放入各种文件夹(src、bin、lib等) 创建等待灯。gif- 我当前的图像项目路径是LosOMeter- 有什么想法吗? 堆栈跟踪:

  • 这是我的缓存: 有什么想法为什么这会失败在Android2.3而不是4.0?

  • 我试图使用docker-dotnet-sonarscanner在本地检查代码覆盖率。 我直到现在的脚步: 19:02:22.429请求和解析“172.20.61.69:9000/API/Server/Version”失败:WebClient请求期间发生异常。 未处理的异常:System.net.WebException:在WebClient请求期间发生异常。--->System.NullRefer