| // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:source_span/source_span.dart'; |
| |
| /// Runs [body] and wraps any format exceptions it produces. |
| /// |
| /// [name] should describe the type of thing being parsed, and [value] should be |
| /// its actual value. |
| T wrapFormatException<T>(String name, String value, T Function() body) { |
| try { |
| return body(); |
| } on SourceSpanFormatException catch (error) { |
| throw SourceSpanFormatException( |
| 'Invalid $name: ${error.message}', error.span, error.source); |
| } on FormatException catch (error) { |
| throw FormatException( |
| 'Invalid $name "$value": ${error.message}', error.source, error.offset); |
| } |
| } |