捕获java.lang.Error

时间:2011-03-24 09:25:06

标签: blackberry java-me mobile

我正在为J2me和Blackberry开发一个Javame框架。我从设备中读取了类型(bb或j2me),然后根据检测到的设备加载了正确的类。

执行以下代码时,只有java.lang.error。我认为那是因为我在KuixCanvasBB中使用了j2me不支持的黑莓包。但有没有办法捕捉到这个错误?

    KuixCanvas canvas;
        if(Settings.j2me)   {
            System.out.println("j2me");
            canvas = new KuixCanvasJ2me(this, isFullscreen());
        }
        else    {
            System.out.println("BB");
            try {
            canvas = new KuixCanvasBB(this, isFullscreen());
                //canvas = new KuixCanvasJ2me(this, isFullscreen());
            }
            catch (java.lang.Error e) {
                canvas=null;
            }
        }

执行上述代码时仍然出现错误:

java.lang.Error: ClassFormatError: 154
 - java.lang.Class.invoke_verify(), bci=0
 - java.lang.Class.initialize(), bci=117
 - java.lang.Class.initialize(), bci=139
 - java.lang.Class.forName(), bci=0

我可以在没有应用程序关闭的情况下捕获此错误吗?

1 个答案:

答案 0 :(得分:3)

由于许多J2ME虚拟机会在运行任何代码之前验证所有代码,因此即使在许多设备上安装也很容易被拒绝。

更安全的解决方案可能是将此作为构建时决策,因为无论如何您都需要单独的.jar文件用于最终构建。

您收到错误的原因可能是因为在JVM上输入方法后立即解析对其他类的引用。