zoukankan      html  css  js  c++  java
  • jni下的捕获异常失败

    在JNI下只能捕捉Throwable类的异常,如果捕捉Exception类的异常是进不到catch方法里的。

    try {
        logger.info("dll文件读取成功");
    } catch (Throwable e) { // JNI只能捕捉到Throwable异常
        e.printStackTrace();
        logger.error("dll文件读取失败");
    }

    原因猜测可能是因为JNI下出现异常是委托给Error类(用来处理程序运行环境方面的异常,比如,虚拟机错误、装载错误和连接错误,这类异常主要是和硬件有关的,而不是由程序本身抛出的),而Throwable类是Error类的父类(Java语言要求java程序中(无论是谁写的代码)所有抛出(throw)的异常都必须是从Throwable派生而来),也就能往下兼容而捕捉到异常。

    因此如果发现在JNI下捕获异常失败,只要将捕捉的Exception类换成Throwable类(或Error类)即可。

    "世事无常,但我依然爱你。"

    你要去做一个大人,不要回头,不要难过。
  • 相关阅读:
    2020.02.22周末作业清单
    2020.2.21作业清单
    2020.2.20作业清单
    数学题目
    2020.2.19作业单
    Request对象
    HTTP协议
    http协议
    tomcate
    servlet-3-相关配置
  • 原文地址:https://www.cnblogs.com/yanggb/p/14779509.html
Copyright © 2011-2022 走看看