首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java检查异常不在函数的抛出规范中?

Java检查异常不在函数的抛出规范中?
EN

Stack Overflow用户
提问于 2012-08-02 03:52:47
回答 1查看 350关注 0票数 10

通常,Java编译器确认所有抛出的检查异常都在抛出规范中。当本机函数抛出一个不在函数抛出规范列表中的java检查异常时,会发生什么特殊的事情吗?或者抛出规范列表在运行时被忽略了吗?

C++

代码语言:javascript
复制
void function(JNIEnv * env, jclass jc) {
    jclass newExcCls = env->FindClass("java/lang/NullPointerException");
    env->ThrowNew(newExcCls, "ERROR");
}

Java

代码语言:javascript
复制
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中。不要紧,我不相信这与问题有关。代码中可能还有其他错误,但它们可能也不相关。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-02 03:57:30

您甚至不必求助于本机代码来欺骗检查的异常机制。请参阅Javadoc on Thread.stop(Throwable)。我曾经一整天都在想,我的代码如何在没有声明它的代码中间抛出一个InterruptedException。我当时甚至没有找到答案,但现在我知道了:)

回答您直接的问题:是的,检查的异常逻辑是一个仅限编译器的特性,在运行时被忽略。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11766557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档