blob: e6ee7ac61cb07065273da5555881591374f705ca [file] [log] [blame]
// Copyright (c) 2012, 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.
// Exceptions are thrown either by the VM or from Dart code.
/**
* Interface implemented by all core library exceptions.
* Defaults to an implementation that only carries a simple message.
*/
interface Exception default ExceptionImplementation {
const Exception([var message]);
}
/**
* Exception thrown because of an index outside of the valid range.
*/
class IndexOutOfRangeException implements Exception {
const IndexOutOfRangeException(this._value);
String toString() => "IndexOutOfRangeException: $_value";
final _value;
}
/**
* Exception thrown because of attempt to modify an immutable object.
*/
class IllegalAccessException implements Exception {
const IllegalAccessException();
String toString() => "Attempt to modify an immutable object";
}
class ClosureArgumentMismatchException implements Exception {
const ClosureArgumentMismatchException();
String toString() => "Closure argument mismatch";
}
class ObjectNotClosureException implements Exception {
const ObjectNotClosureException();
String toString() => "Object is not closure";
}
class OutOfMemoryException implements Exception {
const OutOfMemoryException();
String toString() => "Out of Memory";
}
class StackOverflowException implements Exception {
const StackOverflowException();
String toString() => "Stack Overflow";
}
/**
* Exception thrown when a string or some other data does not have an expected
* format and cannot be parsed or processed.
*/
class FormatException implements Exception {
/**
* A message describing the format error.
*/
final String message;
/**
* Creates a new FormatException with an optional error [message].
*/
const FormatException([this.message = ""]);
String toString() => "FormatException: $message";
}
class WrongArgumentCountException implements Exception {
const WrongArgumentCountException();
String toString() => "WrongArgumentCountException";
}
class NullPointerException implements Exception {
const NullPointerException([this.functionName, this.arguments = const []]);
String toString() {
if (functionName == null) {
return exceptionName;
} else {
return "$exceptionName : method: '$functionName'\n"
"Receiver: null\n"
"Arguments: $arguments";
}
}
String get exceptionName => "NullPointerException";
final String functionName;
final List arguments;
}
class NoMoreElementsException implements Exception {
const NoMoreElementsException();
String toString() => "NoMoreElementsException";
}
class EmptyQueueException implements Exception {
const EmptyQueueException();
String toString() => "EmptyQueueException";
}
class UnsupportedOperationException implements Exception {
const UnsupportedOperationException(String this._message);
String toString() => "UnsupportedOperationException: $_message";
final String _message;
}
class NotImplementedException implements Exception {
const NotImplementedException([String message]) : this._message = message;
String toString() => (this._message !== null
? "NotImplementedException: $_message"
: "NotImplementedException");
final String _message;
}
class IllegalJSRegExpException implements Exception {
const IllegalJSRegExpException(String this._pattern, String this._errmsg);
String toString() => "IllegalJSRegExpException: '$_pattern' '$_errmsg'";
final String _pattern;
final String _errmsg;
}
class IntegerDivisionByZeroException implements Exception {
const IntegerDivisionByZeroException();
String toString() => "IntegerDivisionByZeroException";
}
/**
* Exception thrown when a runtime error occurs.
*/
class RuntimeError implements Exception {
final message;
RuntimeError(this.message);
String toString() => "RuntimeError: $message";
}