2/n Code clarity: Use enum to clarify the values parsed by JsErrorHandler
Summary: Changelog: [Internal] Code clarity: Use enum to clarify the values parsed by JsErrorHandler Create a enum `JSErrorHandlerKey` to define the keys for the values that goes into each stack frame. Next up -- using this in the Bridge! Reviewed By: sammy-SC Differential Revision: D40326127 fbshipit-source-id: e416814fbcaa922afa92d9baf79eaa898ff979f0
This commit is contained in:
Родитель
4631cf933e
Коммит
20c9654ca7
|
@ -15,6 +15,8 @@
|
|||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
using facebook::react::JSErrorHandlerKey;
|
||||
|
||||
static MapBuffer
|
||||
parseErrorStack(const jsi::JSError &error, bool isFatal, bool isHermes) {
|
||||
/**
|
||||
|
@ -53,37 +55,37 @@ parseErrorStack(const jsi::JSError &error, bool isFatal, bool isHermes) {
|
|||
if (std::regex_search(line, searchResults, REGEX_HERMES)) {
|
||||
std::string str2 = std::string(searchResults[2]);
|
||||
if (str2.compare("native")) {
|
||||
frame.putString(0, std::string(searchResults[4]));
|
||||
frame.putString(1, std::string(searchResults[1]));
|
||||
frame.putInt(2, std::stoi(searchResults[5]));
|
||||
frame.putInt(3, std::stoi(searchResults[6]));
|
||||
frame.putString(kFrameFileName, std::string(searchResults[4]));
|
||||
frame.putString(kFrameMethodName, std::string(searchResults[1]));
|
||||
frame.putInt(kFrameLineNumber, std::stoi(searchResults[5]));
|
||||
frame.putInt(kFrameColumnNumber, std::stoi(searchResults[6]));
|
||||
frames.push_back(frame.build());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (std::regex_search(line, searchResults, REGEX_GECKO)) {
|
||||
frame.putString(0, std::string(searchResults[3]));
|
||||
frame.putString(1, std::string(searchResults[1]));
|
||||
frame.putInt(2, std::stoi(searchResults[4]));
|
||||
frame.putInt(3, std::stoi(searchResults[5]));
|
||||
frame.putString(kFrameFileName, std::string(searchResults[3]));
|
||||
frame.putString(kFrameMethodName, std::string(searchResults[1]));
|
||||
frame.putInt(kFrameLineNumber, std::stoi(searchResults[4]));
|
||||
frame.putInt(kFrameColumnNumber, std::stoi(searchResults[5]));
|
||||
} else if (
|
||||
std::regex_search(line, searchResults, REGEX_CHROME) ||
|
||||
std::regex_search(line, searchResults, REGEX_NODE)) {
|
||||
frame.putString(0, std::string(searchResults[2]));
|
||||
frame.putString(1, std::string(searchResults[1]));
|
||||
frame.putInt(2, std::stoi(searchResults[3]));
|
||||
frame.putInt(3, std::stoi(searchResults[4]));
|
||||
frame.putString(kFrameFileName, std::string(searchResults[2]));
|
||||
frame.putString(kFrameMethodName, std::string(searchResults[1]));
|
||||
frame.putInt(kFrameLineNumber, std::stoi(searchResults[3]));
|
||||
frame.putInt(kFrameColumnNumber, std::stoi(searchResults[4]));
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
frames.push_back(frame.build());
|
||||
}
|
||||
}
|
||||
errorObj.putMapBufferList(4, std::move(frames));
|
||||
errorObj.putString(5, error.getMessage());
|
||||
errorObj.putMapBufferList(kAllStackFrames, std::move(frames));
|
||||
errorObj.putString(kErrorMessage, error.getMessage());
|
||||
// TODO: If needed, can increment exceptionId by 1 each time
|
||||
errorObj.putInt(6, 0);
|
||||
errorObj.putBool(7, isFatal);
|
||||
errorObj.putInt(kExceptionId, 0);
|
||||
errorObj.putBool(kIsFatal, isFatal);
|
||||
return errorObj.build();
|
||||
}
|
||||
|
||||
|
|
|
@ -11,14 +11,16 @@
|
|||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
const int FILE_KEY_OF_JS_ERROR = 0;
|
||||
const int METHOD_NAME_KEY_OF_JS_ERROR = 1;
|
||||
const int LINE_NUMBER_KEY_OF_JS_ERROR = 2;
|
||||
const int COLUMN_KEY_OF_JS_ERROR = 3;
|
||||
const int FRAMES_KEY_OF_JS_ERROR = 4;
|
||||
const int MESSAGE_KEY_OF_JS_ERROR = 5;
|
||||
const int ID_KEY_OF_JS_ERROR = 6;
|
||||
const int IS_FATAL_KEY_OF_JS_ERROR = 7;
|
||||
enum JSErrorHandlerKey : uint16_t {
|
||||
kFrameFileName = 0,
|
||||
kFrameMethodName = 1,
|
||||
kFrameLineNumber = 2,
|
||||
kFrameColumnNumber = 3,
|
||||
kAllStackFrames = 4,
|
||||
kErrorMessage = 5,
|
||||
kExceptionId = 6,
|
||||
kIsFatal = 7
|
||||
};
|
||||
|
||||
class JsErrorHandler {
|
||||
public:
|
||||
|
|
Загрузка…
Ссылка в новой задаче