Ignoring specific exceptions
- Langage dominant
- Ruby
- Étoiles
- 7.8k
- Forks
- 505
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Currently observation _values_ and not _observation objects_ are being passed to `ignore`. This means it's not possible to ignore transient exceptions that occur in either candidate or control. When an exception occurs, `nil` is passed as value to `ignore` for that behavior.
Example:
```ruby
e = Scientist::Experiment.new "foo"
e.use { rand > 0.001 ? 42 : raise SomeConnectionTimedOut.new }
e.try { rand > 0.001 ? 42 : raise SomeConnectionTimedOut.new }
e.ignore do |control, candidate|
# control/candidate is nil if exception occurred in that behavior
end
```
It would be great if `ignore` received an observation object instead of only the observation value. That would allow examining the exception value.
Example:
```ruby
# Proposed behavior! This is currently not possible.
ignore do |control, candidate|
control.exception.is_a?(SomeConnectionTimedOut) ||
candidate.exception.is_a?(SomeConnectionTimedOut)
end
```
I currently work around the above issue by rescuing inside `try`/`use` and return a sentinel value -- it's a terrible hack though. Would you accept a PR implementing this?
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.