Merge pull request #718 from abarth/one_stack_trace

Uncaught exceptions get two stack traces
This commit is contained in:
Adam Barth 2015-08-20 12:13:44 -07:00
commit 7dfac2f1ca
3 changed files with 10 additions and 6 deletions

View File

@ -179,7 +179,6 @@ class Server {
_notifyServerState(ip, _server.port);
return this;
}).catchError((e, st) {
print('Could not start Observatory HTTP server:\n$e\n$st\n');
_notifyServerState("", 0);
return this;
});

View File

@ -16,15 +16,16 @@ const char kInvalidArgument[] = "Invalid argument.";
bool LogIfError(Dart_Handle handle) {
if (Dart_IsError(handle)) {
LOG(ERROR) << Dart_GetError(handle);
// Only unhandled exceptions have stacktraces.
if (!Dart_ErrorHasException(handle))
if (!Dart_ErrorHasException(handle)) {
LOG(ERROR) << Dart_GetError(handle);
return true;
}
Dart_Handle stacktrace = Dart_ErrorGetStacktrace(handle);
const char* stacktrace_cstr = "";
Dart_StringToCString(Dart_ToString(stacktrace), &stacktrace_cstr);
LOG(ERROR) << "Unhandled exception:";
LOG(ERROR) << stacktrace_cstr;
return true;
}

View File

@ -42,8 +42,10 @@ base::FilePath SimplifyPath(const base::FilePath& path) {
DartLibraryProviderFiles::DartLibraryProviderFiles(
const base::FilePath& package_root)
: package_root_(package_root) {
CHECK(base::DirectoryExists(package_root_)) << "Invalid --package-root "
<< "\"" << package_root_.LossyDisplayName() << "\"";
if (package_root_.empty())
package_root_ = base::FilePath(FILE_PATH_LITERAL("packages"));
if (!base::DirectoryExists(package_root_))
package_root_ = base::FilePath();
}
DartLibraryProviderFiles::~DartLibraryProviderFiles() {
@ -65,6 +67,8 @@ void DartLibraryProviderFiles::GetLibraryAsStream(
std::string DartLibraryProviderFiles::CanonicalizePackageURL(std::string url) {
DCHECK(base::StartsWithASCII(url, "package:", true));
base::ReplaceFirstSubstringAfterOffset(&url, 0, "package:", "");
CHECK(!package_root_.empty())
<< "Cannot import packages without a valid --package-root";
return package_root_.Append(url).AsUTF8Unsafe();
}