4

我正在使用 Haxe 为 CPP 目标编写应用程序的 UI。我需要在应用程序崩溃之前拦截 haxe 错误/异常。
以下是导致应用程序崩溃的代码示例:

@:final private function callFoo(classA : IInterface) : Void
{
    if ((mClassLevelVariable != null) && (classA != mClassLevelVariable))
    {
        throw new Error("Can not work with " + Type.getClassName(Type.getClass((classA))));
    }
}  

我需要在上面给出的错误使应用程序崩溃之前拦截崩溃。我们是否像 Java 提供的那样对 Haxe 提供任何支持Thread.UncaughtExceptionHandler

4

1 回答 1

4

您可以简单地将您的包装main()在 try-catch 中:

class Main {
    static function main() {
        try {
            entryPoint();
        } catch (e:Any) {
            // do something with e
        }
    }
}

例如,OpenFL 也是这样实现 Flash 的未捕获错误事件的。

请注意,并非所有异常都可以在 hxcpp 中以这种方式捕获。HXCPP_CHECK_POINTER例如,空指针异常只有在定义时才能被捕获。

于 2019-03-25T17:18:45.887 回答