天天看點

捕獲System.loadLibrary()産生的異常

今天在工作中想捕獲System.loadLibrary()産生的異常,

開始時:

        try {

                System.loadLibrary("LKT5103JNI");

            } catch (Exception  e) {

                log.debug("##load LKT JNI failed!");

            }

就是擷取不到,然後修改如下:

        try {

                System.loadLibrary("LKT5103JNI");

            } catch (Throwable   e) {

                log.debug("##load LKT JNI failed!");

            }

分析:

    Throwable 類是 Java 語言中所有錯誤或異常的超類。隻有當對象是此類(或其子類之一)的執行個體時,才能通過 Java 虛拟機或者 Java throw 語句抛出。類似地,隻有此類或其子類之一才可以是 catch 子句中的參數類型。兩個子類的執行個體,Error和Exception。然後再看loadLibrary方法:加載由 libname 參數指定的系統庫。将庫名映射到實際系統庫的方法取決于系統。 調用 System.loadLibrary(name) 實際上等效于調用:

    Runtime.getRuntime().loadLibrary(name)

    會抛出:

    SecurityException - 如果安全管理器存在并且其 checkLink 方法不允許加載指定的動态庫。

    UnsatisfiedLinkError - 如果庫不存在。

    NullPointerException - 如果 libname 為 null

    是以用Throwable包含了loadLibrary所有抛出的異常和錯誤就可以做出相應的邏輯