OLD | NEW |
| (Empty) |
1 part of dart.core; | |
2 class Error {Error(); | |
3 static String safeToString(Object object) { | |
4 if (object is num || object is bool || null == object) { | |
5 return object.toString(); | |
6 } | |
7 if (object is String) { | |
8 return _stringToSafeString(object); | |
9 } | |
10 return _objectToString(object); | |
11 } | |
12 external static String _stringToSafeString(String string); | |
13 external static String _objectToString(Object object); | |
14 external StackTrace get stackTrace; | |
15 } | |
16 class AssertionError extends Error {} | |
17 class TypeError extends AssertionError {} | |
18 class CastError extends Error {} | |
19 class NullThrownError extends Error {String toString() => "Throw of null."; | |
20 } | |
21 class ArgumentError extends Error {final bool _hasValue; | |
22 final invalidValue; | |
23 final String name; | |
24 final message; | |
25 ArgumentError([this.message]) : invalidValue = null, _hasValue = false, name =
null; | |
26 ArgumentError.value(value, [String this.name, String this.message = "Invalid ar
gument"]) : invalidValue = value, _hasValue = true; | |
27 ArgumentError.notNull([String name]) : this.value(null, name, "Must not be null
"); | |
28 String toString() { | |
29 if (!_hasValue) { | |
30 var result = "Invalid arguments(s)"; | |
31 if (message != null) { | |
32 result = "$result: $message"; | |
33 } | |
34 return result; | |
35 } | |
36 String nameString = ""; | |
37 if (name != null) { | |
38 nameString = " ($name)"; | |
39 } | |
40 return "$message$nameString: ${Error.safeToString(invalidValue)}"; | |
41 } | |
42 } | |
43 class RangeError extends ArgumentError {final num start; | |
44 final num end; | |
45 RangeError(var message) : start = null, end = null, super(message); | |
46 RangeError.value(num value, [String name, String message]) : start = null, end
= null, super.value(value, name, (message != null) ? message : "Value not in ran
ge"); | |
47 RangeError.range(num invalidValue, int minValue, int maxValue, [String name, St
ring message]) : start = minValue, end = maxValue, super.value(invalidValue, nam
e, (message != null) ? message : "Invalid value"); | |
48 factory RangeError.index(int index, indexable, [String name, String message, in
t length]) = IndexError; | |
49 static void checkValueInInterval(int value, int minValue, int maxValue, [String
name, String message]) { | |
50 if (value < minValue || value > maxValue) { | |
51 throw new RangeError.range(value, minValue, maxValue, name, message); | |
52 } | |
53 } | |
54 static void checkValidIndex(int index, var indexable, [String name, int length,
String message]) { | |
55 if (length == null) length = DEVC$RT.cast(indexable.length, dynamic, int, "Dynam
icCast", """line 281, column 34 of dart:core/errors.dart: """, indexable.length
is int, true); | |
56 if (index < 0 || index >= length) { | |
57 if (name == null) name = "index"; | |
58 throw new RangeError.index(index, indexable, name, message, length); | |
59 } | |
60 } | |
61 static void checkValidRange(int start, int end, int length, [String startName,
String endName, String message]) { | |
62 if (start < 0 || start > length) { | |
63 if (startName == null) startName = "start"; | |
64 throw new RangeError.range(start, 0, length, startName, message); | |
65 } | |
66 if (end != null && (end < start || end > length)) { | |
67 if (endName == null) endName = "end"; | |
68 throw new RangeError.range(end, start, length, endName, message); | |
69 } | |
70 } | |
71 static void checkNotNegative(int value, [String name, String message]) { | |
72 if (value < 0) throw new RangeError.range(value, 0, null, name, message); | |
73 } | |
74 String toString() { | |
75 if (!_hasValue) return "RangeError: $message"; | |
76 String value = Error.safeToString(invalidValue); | |
77 String explanation = ""; | |
78 if (start == null) { | |
79 if (end != null) { | |
80 explanation = ": Not less than or equal to $end"; | |
81 } | |
82 } | |
83 else if (end == null) { | |
84 explanation = ": Not greater than or equal to $start"; | |
85 } | |
86 else if (end > start) { | |
87 explanation = ": Not in range $start..$end, inclusive."; | |
88 } | |
89 else if (end < start) { | |
90 explanation = ": Valid value range is empty"; | |
91 } | |
92 else { | |
93 explanation = ": Only valid value is $start"; | |
94 } | |
95 return "RangeError: $message ($value)$explanation"; | |
96 } | |
97 } | |
98 class IndexError extends ArgumentError implements RangeError {final indexable; | |
99 final int length; | |
100 IndexError(int invalidValue, indexable, [String name, String message, int lengt
h]) : this.indexable = indexable, this.length = (length != null) ? length : DEVC
$RT.cast(indexable.length, dynamic, int, "DynamicCast", """line 371, column 51 o
f dart:core/errors.dart: """, indexable.length is int, true), super.value(invali
dValue, name, (message != null) ? message : "Index out of range"); | |
101 int get start => 0; | |
102 int get end => length - 1; | |
103 String toString() { | |
104 assert (_hasValue); String target = Error.safeToString(indexable); | |
105 var explanation = "index should be less than $length"; | |
106 if (invalidValue < 0) { | |
107 explanation = "index must not be negative"; | |
108 } | |
109 return "RangeError: $message ($target[$invalidValue]): $explanation"; | |
110 } | |
111 } | |
112 class FallThroughError extends Error {FallThroughError(); | |
113 } | |
114 class AbstractClassInstantiationError extends Error {final String _className; | |
115 AbstractClassInstantiationError(String this._className); | |
116 String toString() => "Cannot instantiate abstract class: '$_className'"; | |
117 } | |
118 class NoSuchMethodError extends Error {final Object _receiver; | |
119 final Symbol _memberName; | |
120 final List _arguments; | |
121 final Map<Symbol, dynamic> _namedArguments; | |
122 final List _existingArgumentNames; | |
123 NoSuchMethodError(Object receiver, Symbol memberName, List positionalArguments,
Map<Symbol, dynamic> namedArguments, [List existingArgumentNames = null]) : _re
ceiver = receiver, _memberName = memberName, _arguments = positionalArguments, _
namedArguments = namedArguments, _existingArgumentNames = existingArgumentNames; | |
124 external String toString(); | |
125 } | |
126 class UnsupportedError extends Error {final String message; | |
127 UnsupportedError(this.message); | |
128 String toString() => "Unsupported operation: $message"; | |
129 } | |
130 class UnimplementedError extends Error implements UnsupportedError {final Strin
g message; | |
131 UnimplementedError([String this.message]); | |
132 String toString() => (this.message != null ? "UnimplementedError: $message" : "
UnimplementedError"); | |
133 } | |
134 class StateError extends Error {final String message; | |
135 StateError(this.message); | |
136 String toString() => "Bad state: $message"; | |
137 } | |
138 class ConcurrentModificationError extends Error {final Object modifiedObject; | |
139 ConcurrentModificationError([this.modifiedObject]); | |
140 String toString() { | |
141 if (modifiedObject == null) { | |
142 return "Concurrent modification during iteration."; | |
143 } | |
144 return "Concurrent modification during iteration: " "${Error.safeToString(modif
iedObject)}."; | |
145 } | |
146 } | |
147 class OutOfMemoryError implements Error {const OutOfMemoryError(); | |
148 String toString() => "Out of Memory"; | |
149 StackTrace get stackTrace => null; | |
150 } | |
151 class StackOverflowError implements Error {const StackOverflowError(); | |
152 String toString() => "Stack Overflow"; | |
153 StackTrace get stackTrace => null; | |
154 } | |
155 class CyclicInitializationError extends Error {final String variableName; | |
156 CyclicInitializationError([this.variableName]); | |
157 String toString() => variableName == null ? "Reading static variable during its
initialization" : "Reading static variable '$variableName' during its initializ
ation"; | |
158 } | |
OLD | NEW |