Index: sdk/lib/_internal/pub/lib/src/utils.dart |
diff --git a/sdk/lib/_internal/pub/lib/src/utils.dart b/sdk/lib/_internal/pub/lib/src/utils.dart |
index 30a67b0bce513cb0591a54e3b27976d95ead34cb..6f904c32459a2a70f76ec5c90d26901e58c42278 100644 |
--- a/sdk/lib/_internal/pub/lib/src/utils.dart |
+++ b/sdk/lib/_internal/pub/lib/src/utils.dart |
@@ -8,18 +8,14 @@ library pub.utils; |
import 'dart:async'; |
import "dart:convert"; |
import 'dart:io'; |
-import 'dart:isolate'; |
@MirrorsUsed(targets: 'pub.io') |
import 'dart:mirrors'; |
-import "package:analyzer/analyzer.dart"; |
import "package:crypto/crypto.dart"; |
-import "package:http/http.dart" as http; |
import 'package:path/path.dart' as path; |
import "package:stack_trace/stack_trace.dart"; |
-import "package:yaml/yaml.dart"; |
-import '../../asset/dart/serialize.dart'; |
+import 'exceptions.dart'; |
export '../../asset/dart/utils.dart'; |
@@ -806,97 +802,11 @@ String yamlToString(data) { |
return buffer.toString(); |
} |
-/// An exception class for exceptions that are intended to be seen by the user. |
-/// |
-/// These exceptions won't have any debugging information printed when they're |
-/// thrown. |
-class ApplicationException implements Exception { |
- final String message; |
- |
- /// The underlying exception that [this] is wrapping, if any. |
- final innerError; |
- |
- /// The stack trace for [innerError] if it exists. |
- final Trace innerTrace; |
- |
- ApplicationException(this.message, [this.innerError, StackTrace innerTrace]) |
- : innerTrace = innerTrace == null ? null : new Trace.from(innerTrace); |
- |
- String toString() => message; |
-} |
- |
-/// A class for command usage exceptions. |
-class UsageException extends ApplicationException { |
- /// The command usage information. |
- final String usage; |
- |
- UsageException(String message, this.usage) |
- : super(message); |
- |
- String toString() => "$message\n\n$usage"; |
-} |
- |
-/// A class for errors in a command's input data. |
-/// |
-/// This corresponds to the [exit_codes.DATA] exit code. |
-class DataException extends ApplicationException { |
- DataException(String message) |
- : super(message); |
-} |
- |
-/// An class for exceptions where a package could not be found in a [Source]. |
-/// |
-/// The source is responsible for wrapping its internal exceptions in this so |
-/// that other code in pub can use this to show a more detailed explanation of |
-/// why the package was being requested. |
-class PackageNotFoundException extends ApplicationException { |
- PackageNotFoundException(String message, [innerError, StackTrace innerTrace]) |
- : super(message, innerError, innerTrace); |
-} |
- |
/// Throw a [ApplicationException] with [message]. |
void fail(String message, [innerError, StackTrace innerTrace]) { |
- throw new ApplicationException(message, innerError, innerTrace); |
-} |
- |
-/// All the names of user-facing exceptions. |
-final _userFacingExceptions = new Set<String>.from([ |
- 'ApplicationException', |
- // This refers to http.ClientException. |
- 'ClientException', |
- // Errors coming from the Dart analyzer are probably caused by syntax errors |
- // in user code, so they're user-facing. |
- 'AnalyzerError', 'AnalyzerErrorGroup', |
- // An error spawning an isolate probably indicates a transformer with an |
- // invalid import. |
- 'IsolateSpawnException', |
- // TODO(nweiz): clean up the dart:io errors when issue 9955 is fixed. |
- 'FileSystemException', 'HttpException', 'OSError', |
- 'ProcessException', 'SocketException', 'TimeoutException', |
- 'WebSocketException' |
-]); |
- |
-/// Returns whether [error] is a user-facing error object. |
-/// |
-/// This includes both [ApplicationException] and any dart:io errors. |
-bool isUserFacingException(error) { |
- if (error is CrossIsolateException) { |
- return _userFacingExceptions.contains(error.type); |
+ if (innerError != null) { |
+ throw new WrappedException(message, innerError, innerTrace); |
+ } else { |
+ throw new ApplicationException(message); |
} |
- |
- // TODO(nweiz): unify this list with _userFacingExceptions when issue 5897 is |
- // fixed. |
- return error is ApplicationException || |
- error is AnalyzerError || |
- error is AnalyzerErrorGroup || |
- error is IsolateSpawnException || |
- error is FileSystemException || |
- error is HttpException || |
- error is http.ClientException || |
- error is OSError || |
- error is ProcessException || |
- error is TimeoutException || |
- error is SocketException || |
- error is WebSocketException || |
- error is YamlException; |
} |