| import ceylon.language { printTrace=printStackTrace } |
| |
| "The abstract supertype of values indicating exceptional |
| conditions. An exception may be raised using the `throw` |
| statement, and handled using the `catch` clause of the `try` |
| statement. An instance of `Throwable` may be passed from |
| `throw` to `catch`. |
| |
| void tryToDoIt() { |
| if (canDoIt()) { |
| doIt(); |
| } |
| else { |
| throw CantDoIt(); //the Throwable |
| } |
| } |
| |
| try { |
| tryToDoIt(); |
| } |
| catch (CantDoIt e) { |
| e.printStackTrace(); |
| } |
| |
| An instance of `Throwable` represents a problem, typically |
| an _unexpected failure_. Either: |
| |
| - a unrecoverable error in the program, especially an |
| [[AssertionError]], or |
| - a transient, and possibly-recoverable [[Exception]]. |
| |
| The use of the exceptions facility to manage _expected |
| failures_, that is, failures that are usually handled by |
| the immediate caller of an operation, is discouraged. |
| Instead, the failure should be represented as a return |
| value of the operation being called. |
| |
| For example, nonexistence of a file should not result in an |
| exception. Instead, an `openFile()` operation should return |
| the type `File?`, where a `null` return value indicates |
| nonexistence. On the other hand, failure to read from an |
| already open file could result in an `Exception`." |
| by ("Gavin", "Tom") |
| tagged("Basic types") |
| since("1.1.0") |
| shared abstract sealed native |
| class Throwable(description=null, cause=null) { |
| |
| "The underlying cause of this exception." |
| shared Throwable? cause; |
| |
| "A description of the problem." |
| String? description; |
| |
| "A message describing the problem. This default |
| implementation returns the description, if any, or |
| otherwise the message of the cause, if any." |
| see (`value cause`) |
| shared default String message |
| => description else cause?.message else ""; |
| |
| shared actual default String string |
| => className(this) + " \"``message``\""; |
| |
| "Print the stack trace to the standard error of the |
| virtual machine process." |
| see (`function printTrace`) |
| shared void printStackTrace() => printTrace(this); |
| |
| "The given exception was suppressed in order to |
| propagate this exception." |
| shared native void addSuppressed(Throwable suppressed); |
| |
| "The exceptions that were suppressed in order to |
| propagate this exception." |
| shared native Throwable[] suppressed; |
| } |
| |