com.google.gwt.core.ext.UnableToCompleteException Maven / Gradle / Ivy
/*
* Copyright 2006 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.gwt.core.ext;
/**
* Used to indicate that some part of a multi-step process failed. Typically,
* operation can continue after this exception is caught.
*
* Before throwing an object of this type, the thrower
*
* - must log a detailed user-facing message describing the failure,
* - must report any caught exception using the logger that contributed to
* the failure, and
* - must not include the cause of the failure in the thrown exception
* because (1) it will already have been associated with the detailed log entry
* above and (2) doing so would create a misunderstanding of how to find the
* causes of low-level errors in that sometimes there is an underlying an
* exception, sometimes not, but there can always be a preceding log
* entry.
*
*
* After catching an object of this type, the catcher
*
* - can be assured that the thrower has already logged a message about the
* lower-level problem
* - can optionally itself log a higher-level description of the process that
* was interrupted and the implications of the failure, and if so,
* - should report this caught exception via the logger as well.
*
*
*
* void lowLevel(Logger logger) throws UnableToCompleteException {
* try {
* doSomethingThatMightFail();
* catch (SomeException e) {
* // Log low-level detail and the caught exception.
* //
* logger.log("detailed problem explanation for user eyes...", e);
*
* // Do not include the caught exception.
* //
* throw new UnableToCompleteException();
* }
* }
*
* void highLevel(Logger logger) {
* try {
* // Multiple calls are shown to indicate that the process can
* // include any number of steps.
* //
* lowLevel(logger);
* lowLevel(logger);
* lowLevel(logger);
* }
* catch (UnableToCompleteException e) {
* logger.log("high-level thing failed", e);
* }
* }
*
*
*/
public class UnableToCompleteException extends Exception {
public UnableToCompleteException() {
super("(see previous log entries)");
}
}