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

fix(core): ErrorHandler should not rethrow an error by default (#15077) #15208

Merged
merged 1 commit into from
Mar 16, 2017

Conversation

mhevery
Copy link
Contributor

@mhevery mhevery commented Mar 16, 2017

ErrorHandler can not throw errors because it will unsubscribe itself from
the error stream.

Zones captures errors and feed it into NgZone, which than has a Rx Observable
to feed it into ErrorHandler. If the ErroHandler throws, then Rx will teardown
the observable which in essence causes the ErrorHandler to be removed from the
error handling. This implies that the ErrorHandler can never throw errors.

Closes #14949
Closes #15182
Closes #14316

@mhevery mhevery added the action: merge The PR is ready for merge by the caretaker label Mar 16, 2017
@mhevery mhevery requested a review from chuckjaz March 16, 2017 17:08
@mhevery mhevery modified the milestones: 4.0.0-blocker-candidates, 4.0.0-blockers Mar 16, 2017
@@ -43,11 +43,9 @@ export class ErrorHandler {
_console: Console = console;

/**
* @internal
* @deprecated since v4.0 parameter no longer has an effect, as ErrorHandler will never rethrow.
Copy link
Contributor

Choose a reason for hiding this comment

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

You must leave @internal or you will break implementors of this class.

Copy link
Contributor

Choose a reason for hiding this comment

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

Also the field is not deprecated, the parameter is.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think you should overload the constructor and deprecate the one with parameter

…ar#15077)

ErrorHandler can not throw errors because it will unsubscribe itself from
the error stream.

Zones captures errors and feed it into NgZone, which than has a Rx Observable
to feed it into ErrorHandler. If the ErroHandler throws, then Rx will teardown
the observable which in essence causes the ErrorHandler to be removed from the
error handling. This implies that the ErrorHandler can never throw errors.

Closes angular#14949
Closes angular#15182
Closes angular#14316
@chuckjaz chuckjaz merged commit 77fd91d into angular:master Mar 16, 2017
@DzmitryShylovich
Copy link
Contributor

@chuckjaz @mhevery btw IDE doesn't cross out constructor when parameter is deprecated:

class Test {
  constructor(/** @deprecated */ obj?: any) {
  }
}

new Test1(11); // everything is ok

but with constructor overload it does

class Test {
  constructor();
  /** @deprecated */
  constructor(obj: any);
  constructor(obj?: any) {
  }
}

new Test(11); // constructor is crossed out

SamVerschueren pushed a commit to SamVerschueren/angular that referenced this pull request Mar 18, 2017
…ar#15077) (angular#15208)

ErrorHandler can not throw errors because it will unsubscribe itself from
the error stream.

Zones captures errors and feed it into NgZone, which than has a Rx Observable
to feed it into ErrorHandler. If the ErroHandler throws, then Rx will teardown
the observable which in essence causes the ErrorHandler to be removed from the
error handling. This implies that the ErrorHandler can never throw errors.

Closes angular#14949
Closes angular#15182
Closes angular#14316
@christianacca
Copy link

Unfortunately #14316 is not fixed by this PR

@mhevery mhevery deleted the errorhandler branch June 2, 2017 17:03
asnowwolf pushed a commit to asnowwolf/angular that referenced this pull request Aug 11, 2017
…ar#15077) (angular#15208)

ErrorHandler can not throw errors because it will unsubscribe itself from
the error stream.

Zones captures errors and feed it into NgZone, which than has a Rx Observable
to feed it into ErrorHandler. If the ErroHandler throws, then Rx will teardown
the observable which in essence causes the ErrorHandler to be removed from the
error handling. This implies that the ErrorHandler can never throw errors.

Closes angular#14949
Closes angular#15182
Closes angular#14316
juleskremer pushed a commit to juleskremer/angular that referenced this pull request Aug 28, 2017
…ar#15077) (angular#15208)

ErrorHandler can not throw errors because it will unsubscribe itself from
the error stream.

Zones captures errors and feed it into NgZone, which than has a Rx Observable
to feed it into ErrorHandler. If the ErroHandler throws, then Rx will teardown
the observable which in essence causes the ErrorHandler to be removed from the
error handling. This implies that the ErrorHandler can never throw errors.

Closes angular#14949
Closes angular#15182
Closes angular#14316
@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Sep 11, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
action: merge The PR is ready for merge by the caretaker cla: yes
Projects
None yet
5 participants