blob: ca00fd3af5fa0b7115b3bfd7941a9460d18c15e0 [file] [log] [blame]
// 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);