Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle error messages from remote protocol correctly. #853

Merged
merged 1 commit into from
Oct 31, 2016

Conversation

shakyShane
Copy link
Contributor

If the result of parsing the incoming message from json => pojo contains an error, the
result property will not exist. This means error handling later in the program will fail since
you will not be able to access error.code, error.stack etc.

Before: (current master branch)
screen shot 2016-10-29 at 10 53 50

After:
screen shot 2016-10-29 at 11 08 56

If the result of parsing the incoming message from json => pojo contains an error, the
 `result` property will not exist. This means error handling later in the program will fail since
 you will not be able to access `error.code`, `error.stack` etc.
Copy link
Member

@paulirish paulirish left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup. I ran into this today.

@paulirish
Copy link
Member

I'm going to break the build by merging this, but it exposes a runtime error that would have otherwise been caught when we merged https://github.com/GoogleChrome/lighthouse/pull/830/files#diff-5917acd1c4154d5b21b9c3c6ada674e6

@paulirish paulirish merged commit 5eb4e1a into GoogleChrome:master Oct 31, 2016
{method: callback.method, params: object.result}, 'error');
callback.reject(object.result);
{method: callback.method}, 'error');
callback.reject(object.error);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we might want to augment this message with information about it being from the debugging protocol (since I believe the log above that will only be on if you specify --verbose)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps we should just new up an Error object? I can't vouch for the entire code base (yet) but it would be nice if any errors that flow through the promise pipeline were of a similar 'shape'

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

... plus augment as you suggest

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the idea of both. Make the source of the error clear in the message (at the very least it'll make bug reports easier to track down) and standardize on reject(new Error(msg)) so that we can depend on the shape.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also by creating a new Error inline there, anyone can print the stack and at the very least get back to this protocol handling bit

@brendankenny
Copy link
Member

I'm going to break the build by merging this, but it exposes a runtime error that would have otherwise been caught when we merged

SGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants