blob: a76fbe3db46c6adcb3047e9616c3be800826058f [file] [log] [blame]
// Copyright 2014 The Bazel Authors. All rights reserved.
//
// 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.
// All Rights Reserved.
package com.google.devtools.build.lib.vfs;
import java.io.IOException;
/**
* Signals that an I/O exception of some sort has occurred. Contrary to
* <code>java.io.IOException</code>, this class is a subclass of
* <code>RuntimeException</code>, which allows you to signal an I/O problem
* without polluting the callers. For details on why checked exceptions is bad,
* try searching for "java checked exception mistake" on Google.
*/
public class IORuntimeException extends RuntimeException {
/**
* Constructs a new IORuntimeException with null as its detail message.
*/
public IORuntimeException() {
super();
}
/**
* Constructs a new IORuntimeException with the specified detail message.
*/
public IORuntimeException(String message) {
super(message);
}
/**
* Constructs a new IORuntimeException with the specified detail message and
* cause.
*
* @param message the detail message, which is saved for later retrieval by
* the <code>Throwable.getMessage()</code> method.
* @param cause the cause (which is saved for later retrieval by the
* <code>Throwable.getCause()</code> method). (A null value is
* permitted, and indicates that the cause is nonexistent or unknown.)
*/
public IORuntimeException(String message, Throwable cause) {
super(message, cause);
}
/**
* Constructs a new IORuntimeException as a wrapper on a root cause
*/
public IORuntimeException(Throwable cause) {
super(cause);
}
/**
* @return the actual IOException that caused this exception, or null if it
* was not caused by an IOException. Call <code>getCause()</code>
* instead if it was caused by other types of exceptions.
*/
public IOException getCauseIOException() {
Throwable cause = getCause();
if (cause instanceof IOException) {
return (IOException) cause;
} else {
return null;
}
}
private static final long serialVersionUID = 1L;
}