diff options
author | Jan Špaček <patek.mail@gmail.com> | 2022-10-26 17:30:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-26 17:30:44 +0200 |
commit | 642118fdeb06817636fe03d0d8428fbd7927094d (patch) | |
tree | 9b74dc6d4267dc97818c21470af36311bfee9ac2 /core/ops.rs | |
parent | a57faa8a0a1bbe895859146b1baee1b991e7ad99 (diff) |
fix(core) Include causes when converting anyhow errors to JS exceptions (#16397)
When an op returns an `anyhow` error with a cause (usually added using
the `.context()` method), the `Error` thrown into JavaScript contains
only the message of the outernmost error in the chain.
This PR simply changes the formatting of `anyhow::Error` from `"{}"` to
`"{:#}"`:
This significantly improves errors for code that embeds Deno and defines
custom ops. For example, in
[chiselstrike/chiselstrike](https://github.com/chiselstrike/chiselstrike),
this PR improves an error message like
```
Error: could not plan migration
```
to
```
Error: could not plan migration: could not migrate table for entity "E": could not add column for field "title": the field does not have a default value
```
Diffstat (limited to 'core/ops.rs')
-rw-r--r-- | core/ops.rs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/core/ops.rs b/core/ops.rs index b339b7d01..8694324ad 100644 --- a/core/ops.rs +++ b/core/ops.rs @@ -133,7 +133,7 @@ impl OpError { pub fn new(get_class: GetErrorClassFn, err: Error) -> Self { Self { class_name: (get_class)(&err), - message: err.to_string(), + message: format!("{:#}", err), code: crate::error_codes::get_error_code(&err), } } |