Перехват исключений RuntimeExceptions, перехваченных в Binder вручную - PullRequest
0 голосов
/ 17 июня 2020

Я ищу способ вручную предварительно перехватить все исключения RuntimeExceptions из Binder. Я использую BoundService, и я хотел бы перехватить эти RuntimeExceptions, а не просто позволить им регистрироваться стандартным способом:

В реализации android class Binder. java вы видите стандартный способ обработка этих исключений:

 // Entry point from android_util_Binder.cpp's onTransact
private boolean execTransact(int code, long dataObj, long replyObj,
        int flags) {
    BinderCallsStats binderCallsStats = BinderCallsStats.getInstance();
    BinderCallsStats.CallSession callSession = binderCallsStats.callStarted(this, code);
    Parcel data = Parcel.obtain(dataObj);
    Parcel reply = Parcel.obtain(replyObj);
    // theoretically, we should call transact, which will call onTransact,
    // but all that does is rewind it, and we just got these from an IPC,
    // so we'll just call it directly.
    boolean res;
    // Log any exceptions as warnings, don't silently suppress them.
    // If the call was FLAG_ONEWAY then these exceptions disappear into the ether.
    final boolean tracingEnabled = Binder.isTracingEnabled();
    try {
        if (tracingEnabled) {
            Trace.traceBegin(Trace.TRACE_TAG_ALWAYS, getClass().getName() + ":" + code);
        }
        res = onTransact(code, data, reply, flags);
    } catch (RemoteException|RuntimeException e) {
        if (LOG_RUNTIME_EXCEPTION) {
            Log.w(TAG, "Caught a RuntimeException from the binder stub implementation.", e);
        }

в случае исключения времени выполнения оно просто регистрируется Log.w (TAG, Caught a RuntimeException из реализации заглушки связующего.)

В моем случае я хотел бы переслать эту информацию в другой фреймворк ведения журнала, который я использую. Есть ли какая-то возможность перехвата или перехвата для получения информации, если это произойдет?

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...