Comments (4)
This sounds like something that should apply to exceptions, not errors.
You shouldn't handle or transform an Error
, because they shouldn't be happening at all. And if you do, it should be because someone higher up will want to catch and handle it, which means it should be rehtrown as an Exception
, not an Error
.
It may make sense to give Exception
a cause
(which may be an Error
).
It probably means having a default toString
which prints the chain of stack traces. Maybe avoid common suffixes in the stack traces, like Java does. More work, but you shouldn't be doing toString
on Exception
to begin with, except for debugging - you should handle the problem instead.
from sdk.
Summary: Dart currently lacks a mechanism to create error chains, making it difficult to preserve original error information and stack traces when re-throwing errors. This leads to loss of context and potential confusion for debugging tools and error reporting libraries.
from sdk.
I'm not sure why this would be unique to exceptions. We could convert an Exception into an Error, and include a cause in the error.
For example, a function that takes a JSON as String
could convert a FormatException into an ArgumentError, and pass the FormatException as cause
to that ArgumentError.
void function(String json) {
try {
jsonCode(json);
} on FormatException catch (e, s) {
throw ArgumentError('json is not a valid JSON', cause: Cause(e, s));
}
}
from sdk.
Handling an exception by throwing an error ... is a reasonable use-case.
from sdk.
Related Issues (20)
- Isolate.run error run with closure HOT 4
- LateInitializationError in ResolutionVisitor.visitForEachPartsWithPattern in resolution_visitor.dart HOT 1
- Expose the code of an initializer to macros HOT 1
- [gardening] ASAN failure on [VM/Runtime] Ensure errno is saved to ensure it is not clobbered by a subsequent operation.
- Expression evaluation returns `true` (instead of an error) for `"a is X"` when `X` is an unresolved identifier (in Flutter?) HOT 3
- Review breakpoint type resolving scope HOT 13
- [CP] [ DDS ] Fix DevTools URI not including a trailing '/' before query parameters HOT 4
- [CP] [ CLI ] Fix issue where 'dart build' would fail to find the 'dart' when run from PATH HOT 7
- `String.fromCharCode[s]` should be deprecated and renamed to `String.fromRune[s]` HOT 4
- "Error: The macro can only be applied to enums or enum values." - What interface to use instead? HOT 1
- Failures on [ CLI ] Fix issue where 'dart build' would fail to find the 'dart' when run from PATH
- Analyzer response to LSP requests extremely slow w/ high latency reported HOT 9
- [breaking change] On Windows refer to special `null` file as '\\?\nul' rather than 'nul'. HOT 7
- LSP Server fails to initialize if an inlayHints request is sent before the client responds to workspace/configuration HOT 23
- DateTime implementation on linux, dates before year 2020 return incorrect timezone HOT 8
- Inconsistent behavior of beginToken for some analyzer AST nodes with doc comments HOT 1
- [dart2js] Incorrect inference for override with default of widened type
- [ddc] Incorrect defaulting of named arguments with certain names
- DDC async function stepping improvements HOT 1
- When performing floating-point calculations, precision may be lost在进行浮点数计算时精度会丢失 HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sdk.