// 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; }