blob: 800a6529ab209a109d82c40a115d020f15734e16 [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.
part of dart.core;
// Exceptions are thrown either by the VM or from Dart code.
/**
* A marker interface implemented by all core library exceptions.
*
* An [Exception] is intended to convey information to the user about a failure,
* so that the error can be addressed programmatically. It is intended to be
* caught, and it should contain useful data fields.
*
* Creating instances of [Exception] directly with [:new Exception("message"):]
* is discouraged, and only included as a temporary measure during development,
* until the actual exceptions used by a library are done.
*/
abstract class Exception {
factory Exception([var message]) => new _ExceptionImplementation(message);
}
/** Default implementation of [Exception] which carries a message. */
class _ExceptionImplementation implements Exception {
final message;
_ExceptionImplementation([this.message]);
String toString() {
if (message == null) return "Exception";
return "Exception: $message";
}
}
/**
* 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 IntegerDivisionByZeroException implements Exception {
const IntegerDivisionByZeroException();
String toString() => "IntegerDivisionByZeroException";
}