From 89b3f8be8250ece9783d41dacf926377e641cd9f Mon Sep 17 00:00:00 2001 From: Jeongik Cha Date: Mon, 18 Mar 2019 14:38:33 +0900 Subject: Add exceptionToString method into binder::Status String exceptionToString(int32_t exceptionCode) Add this method for logging purpose Test: m -j Bug: 127187108 Change-Id: I911c3a667ddbe39245e5c3bbbd09154b2902aad8 --- libs/binder/Status.cpp | 22 +++++++++++++++++++++- libs/binder/include/binder/Status.h | 3 +++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/libs/binder/Status.cpp b/libs/binder/Status.cpp index a3f87557ab..8b33a56484 100644 --- a/libs/binder/Status.cpp +++ b/libs/binder/Status.cpp @@ -63,6 +63,26 @@ Status Status::fromStatusT(status_t status) { return ret; } +std::string Status::exceptionToString(int32_t exceptionCode) { + switch (exceptionCode) { + #define EXCEPTION_TO_CASE(EXCEPTION) case EXCEPTION: return #EXCEPTION; + EXCEPTION_TO_CASE(EX_NONE) + EXCEPTION_TO_CASE(EX_SECURITY) + EXCEPTION_TO_CASE(EX_BAD_PARCELABLE) + EXCEPTION_TO_CASE(EX_ILLEGAL_ARGUMENT) + EXCEPTION_TO_CASE(EX_NULL_POINTER) + EXCEPTION_TO_CASE(EX_ILLEGAL_STATE) + EXCEPTION_TO_CASE(EX_NETWORK_MAIN_THREAD) + EXCEPTION_TO_CASE(EX_UNSUPPORTED_OPERATION) + EXCEPTION_TO_CASE(EX_SERVICE_SPECIFIC) + EXCEPTION_TO_CASE(EX_PARCELABLE) + EXCEPTION_TO_CASE(EX_HAS_REPLY_HEADER) + EXCEPTION_TO_CASE(EX_TRANSACTION_FAILED) + #undef EXCEPTION_TO_CASE + default: return std::to_string(exceptionCode); + } +} + Status::Status(int32_t exceptionCode, int32_t errorCode) : mException(exceptionCode), mErrorCode(errorCode) {} @@ -184,7 +204,7 @@ String8 Status::toString8() const { if (mException == EX_NONE) { ret.append("No error"); } else { - ret.appendFormat("Status(%d): '", mException); + ret.appendFormat("Status(%d, %s): '", mException, exceptionToString(mException).c_str()); if (mException == EX_SERVICE_SPECIFIC || mException == EX_TRANSACTION_FAILED) { ret.appendFormat("%d: ", mErrorCode); diff --git a/libs/binder/include/binder/Status.h b/libs/binder/include/binder/Status.h index c3738f8b29..7d889b6b14 100644 --- a/libs/binder/include/binder/Status.h +++ b/libs/binder/include/binder/Status.h @@ -22,6 +22,7 @@ #include #include +#include namespace android { namespace binder { @@ -97,6 +98,8 @@ public: static Status fromStatusT(status_t status); + static std::string exceptionToString(status_t exceptionCode); + Status() = default; ~Status() = default; -- cgit v1.2.3-59-g8ed1b