Haxe необработанный глобальный обработчик исключений - PullRequest
4 голосов
/ 25 марта 2019

Я пишу пользовательский интерфейс приложения, использующего Haxe для целей CPP.Мне нужно перехватить 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?

1 Ответ

4 голосов
/ 25 марта 2019

Вы можете просто обернуть main() в попытку:

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

Это в значительной степени как, например, OpenFL реализует событие необнаруженной ошибки Flash .

Обратите внимание, что не все исключения могут быть перехвачены таким образом в hxcpp.Например, исключения нулевого указателя могут быть перехвачены, только если определено HXCPP_CHECK_POINTER.

...