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

前端之家收集整理的这篇文章主要介绍了Java检查异常不在函数的throw规范中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
通常,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.我甚至没有找到答案,但现在我知道:)

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

原文链接:https://www.f2er.com/java/123687.html

猜你在找的Java相关文章