/*
 * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
 *
 * 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 net.micode.notes.gtask.exception;

/**
 * NetworkFailureException 类
 * 表示在执行Google Tasks同步操作时发生的网络相关异常
 * 
 * 继承自Exception（受检异常），调用方需要显式捕获或声明抛出
 * 通常用于表示网络连接问题、服务器响应错误等外部因素导致的异常
 * 
 * 应用场景：
 * 1. 网络连接不可用或中断
 * 2. 服务器返回错误状态码（如404、500等）
 * 3. SSL/TLS握手失败
 * 4. 连接超时
 * 5. 其他与网络通信相关的错误
 */
public class NetworkFailureException extends Exception {
    /**
     * 序列化版本UID
     * 用于保持类的版本兼容性，在序列化和反序列化过程中验证类的版本一致性
     */
    private static final long serialVersionUID = 2107610287180234136L;

    /**
     * 默认构造函数
     * 创建一个不包含详细错误信息的NetworkFailureException
     */
    public NetworkFailureException() {
        super(); // 调用父类Exception的无参构造函数
    }

    /**
     * 带错误消息的构造函数
     * 创建一个包含指定错误消息的NetworkFailureException
     * 
     * @param paramString 错误描述信息，用于说明异常发生的原因
     *                    （如："网络连接失败"、"服务器无响应"等）
     */
    public NetworkFailureException(String paramString) {
        super(paramString); // 调用父类Exception的带消息构造函数
    }

    /**
     * 带错误消息和原因的构造函数
     * 创建一个包含指定错误消息和根本原因的NetworkFailureException
     * 通常用于异常链，将底层网络异常包装为更高级别的业务异常
     * 
     * @param paramString 错误描述信息，用于说明异常发生的原因
     * @param paramThrowable 导致此异常的根本原因（底层异常，如IOException等）
     */
    public NetworkFailureException(String paramString, Throwable paramThrowable) {
        super(paramString, paramThrowable); // 调用父类Exception的带消息和原因的构造函数
    }
}