【问题标题】:Haxe uncaught global exception handlerHaxe 未捕获的全局异常处理程序
【发布时间】:2019-03-25 16:50:27
【问题描述】:

我正在使用 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))));
    }
}  

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

【问题讨论】:

    标签: exception error-handling haxe hxcpp


    【解决方案1】:

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

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

    how for instance OpenFL implements Flash's uncaught error event 也差不多。

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

    【讨论】:

    • 正是我正在寻找的那种答案。假设我想在截获错误并完成所需的一切后使应用程序崩溃,那么我们该如何实现呢?例如,我截获了异常/错误,然后我在服务器中记录了一些东西,然后我想使应用程序崩溃。那么如果我们在 entryPoint 上有这种 try/catch 块,我们该怎么做呢?
    • 只需使用throw e; 重新抛出错误 - 不确定 hxcpp 是否允许保留调用堆栈,但某些平台可以:github.com/HaxeFoundation/haxe/issues/4159
    猜你喜欢
    • 2018-06-14
    • 2013-10-25
    • 2011-07-02
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多