1 /* 2 * Copyright (c) 1996, 2020, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package java.io; 27 28 /** 29 * Signals that one of the ObjectStreamExceptions was thrown during a 30 * write operation. Thrown during a read operation when one of the 31 * ObjectStreamExceptions was thrown during a write operation. The 32 * exception that terminated the write can be found in the detail 33 * field. The stream is reset to it's initial state and all references 34 * to objects already deserialized are discarded. 35 * 36 * @since 1.1 37 */ 38 public class WriteAbortedException extends ObjectStreamException { 39 @java.io.Serial 40 private static final long serialVersionUID = -3326426625597282442L; 41 42 /** 43 * Exception that was caught while writing the ObjectStream. 44 * 45 * @deprecated This field predates the general-purpose exception 46 * chaining facility. The {@link Throwable#getCause()} method is 47 * now the preferred means of obtaining this information. 48 * 49 * @serial 50 */ 51 @Deprecated(since="17") 52 public Exception detail; 53 54 /** 55 * Constructs a WriteAbortedException with a string describing 56 * the exception and the exception causing the abort. 57 * @param s String describing the exception. 58 * @param ex Exception causing the abort. 59 */ WriteAbortedException(String s, Exception ex)60 public WriteAbortedException(String s, Exception ex) { 61 super(s); 62 initCause(null); // Disallow subsequent initCause 63 detail = ex; 64 } 65 66 /** 67 * Produce the message and include the message from the nested 68 * exception, if there is one. 69 */ getMessage()70 public String getMessage() { 71 if (detail == null) 72 return super.getMessage(); 73 else 74 return super.getMessage() + "; " + detail.toString(); 75 } 76 77 /** 78 * Returns the exception that terminated the operation (the <i>cause</i>). 79 * 80 * @return the exception that terminated the operation (the <i>cause</i>), 81 * which may be null. 82 * @since 1.4 83 */ 84 @Override getCause()85 public Throwable getCause() { 86 return detail; 87 } 88 } 89