Got rid of the exposed exception code and we now rely on subclasses of LowpanException. Also introduces a new exception: LowpanRuntimeException LowpanRuntimeException, as a subclass of AndroidRuntimeException, doesn't need explicitly delared "throws" statements for function declarations. Most Exceptions are still LowpanExceptions, but some specific error codes, such as ERROR_NCP_PROBLEM, are now using this new exception class. Bug: b/63708181 Change-Id: Idba6233ac4803d33561b5aa951c8fa846c3ab1d8
93 lines
3.2 KiB
Java
93 lines
3.2 KiB
Java
/*
|
|
* Copyright (C) 2017 The Android Open Source Project
|
|
*
|
|
* 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 android.net.lowpan;
|
|
|
|
import android.os.ServiceSpecificException;
|
|
import android.util.AndroidException;
|
|
|
|
/**
|
|
* <code>LowpanException</code> is thrown if an action to a LoWPAN interface could not be performed
|
|
* or a LoWPAN interface property could not be fetched or changed.
|
|
*
|
|
* @see LowpanInterface
|
|
* @hide
|
|
*/
|
|
// @SystemApi
|
|
public class LowpanException extends AndroidException {
|
|
public LowpanException() {}
|
|
|
|
public LowpanException(String message) {
|
|
super(message);
|
|
}
|
|
|
|
public LowpanException(String message, Throwable cause) {
|
|
super(message, cause);
|
|
}
|
|
|
|
public LowpanException(Exception cause) {
|
|
super(cause);
|
|
}
|
|
|
|
/* This method returns LowpanException so that the caller
|
|
* can add "throw" before the invocation of this method.
|
|
* This might seem superfluous, but it is actually to
|
|
* help provide a hint to the java compiler that this
|
|
* function will not return.
|
|
*/
|
|
static LowpanException rethrowFromServiceSpecificException(ServiceSpecificException e)
|
|
throws LowpanException {
|
|
switch (e.errorCode) {
|
|
case ILowpanInterface.ERROR_DISABLED:
|
|
throw new InterfaceDisabledException(e);
|
|
|
|
case ILowpanInterface.ERROR_WRONG_STATE:
|
|
throw new WrongStateException(e);
|
|
|
|
case ILowpanInterface.ERROR_CANCELED:
|
|
throw new OperationCanceledException(e);
|
|
|
|
case ILowpanInterface.ERROR_JOIN_FAILED_UNKNOWN:
|
|
throw new JoinFailedException(e);
|
|
|
|
case ILowpanInterface.ERROR_JOIN_FAILED_AT_SCAN:
|
|
throw new JoinFailedAtScanException(e);
|
|
|
|
case ILowpanInterface.ERROR_JOIN_FAILED_AT_AUTH:
|
|
throw new JoinFailedAtAuthException(e);
|
|
|
|
case ILowpanInterface.ERROR_FORM_FAILED_AT_SCAN:
|
|
throw new NetworkAlreadyExistsException(e);
|
|
|
|
case ILowpanInterface.ERROR_FEATURE_NOT_SUPPORTED:
|
|
throw new LowpanException(
|
|
e.getMessage() != null ? e.getMessage() : "Feature not supported", e);
|
|
|
|
case ILowpanInterface.ERROR_NCP_PROBLEM:
|
|
throw new LowpanRuntimeException(
|
|
e.getMessage() != null ? e.getMessage() : "NCP problem", e);
|
|
|
|
case ILowpanInterface.ERROR_INVALID_ARGUMENT:
|
|
throw new LowpanRuntimeException(
|
|
e.getMessage() != null ? e.getMessage() : "Invalid argument", e);
|
|
|
|
case ILowpanInterface.ERROR_UNSPECIFIED:
|
|
default:
|
|
throw new LowpanRuntimeException(e);
|
|
}
|
|
}
|
|
}
|