加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java检查异常不在函数的throw规范中?

发布时间:2020-12-14 05:02:09 所属栏目:Java 来源:网络整理
导读:通常,Java编译器确认抛出的所有检查的异常都在throw规范中.当本机函数抛出不在函数throw规范列表中的java检查异常,或者是在运行时简单忽略的throw规范列表时是否会发生什么特别的事情? C void function(JNIEnv * env,jclass jc) { jclass newExcCls = env-F
通常,Java编译器确认抛出的所有检查的异常都在throw规范中.当本机函数抛出不在函数throw规范列表中的java检查异常,或者是在运行时简单忽略的throw规范列表时是否会发生什么特别的事情?

C

void function(JNIEnv * env,jclass jc) {
    jclass newExcCls = env->FindClass("java/lang/NullPointerException");
    env->ThrowNew(newExcCls,"ERROR");
}

Java的

public class Tester {
    static {
        System.loadLibrary( "MyLibrary" );
    }        
    private static native void function();
    public static void main(String [ ] args) {
        try {
            function();
        } catch( Exception e ) { //is it caught? Or what happens?
            e.printStackTrace();
        }        
    }
}

(C函数名称可能会被破坏,而且loadLibrary应该是一个try catch,不要在意,我不认为这与问题有关,代码中可能还有其他错误,但是它们可能不相关无论是.)

解决方法

你甚至不用诉诸本地代码来愚弄被检查的异常机制.看到 Javadoc on Thread.stop(Throwable).我一直在想,整个一天,我的代码如何在没有声明的代码中间抛出一个InterruptedException.我甚至没有找到答案,但现在我知道:)

回答你的直接问题:是的,检查的异常逻辑是一个仅编译器的功能,在运行时被忽略.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读