Java中Exception类的名称必须具有Exception后缀,还描述其抛出情况。现在,我在Android的主要外部存储中有两个异常类:

/**
 * Thrown when Application tries to access primary external storage and it is not
 * available for write.This only depends on status of storage, for example media
 * not mounted,bad mounted, or ... .
 */
public class PrimaryExternalStorageIsNotReadyToWriteException extends Exception {
...
}

/**
 * Thrown when Application tries to write on a directory
 * of primary external storage that needs
 * {@link Manifest.permission#WRITE_EXTERNAL_STORAGE} permission but that
 * permission has not granted to the Application.
 */
public class WriteToPrimaryExternalStoragePermisionException extends RuntimeException {
...
}


如您所见,名称很长,但是我不能从名称中删除ExceptionPrimaryExternalStorage。另外,我也不想使用SecurityException或其他现有的例外,因为这些例外很笼统。我知道长名称不被禁止,但是很难使用和提醒他们。我唯一能想到的就是创建一个名称为primaryexternalstorageexceptions的程序包,并将名称更改为IsNotReadyToWriteExceptionWritePermisionException。但这是个好方法吗?还有避免这些长名的更好方法吗?

最佳答案

如果您经常在程序中使用PrimaryExternalStorage,则可以引入(并记录)诸如PES之类的缩写,并根据您的政策使用PESIsNotReadyToWriteExceptionWriteToPESPermissionException(或PesIsNotReadyToWriteExceptionWriteToPesPermissionException)似乎可以在驼峰标识符中使用缩写的说明)。

请注意,第一个例外中的Is绝对是多余的。例如,参见诸如ArrayIndexOutOfBoundsException之类的JDK异常不是ArrayIndexIsOutOfBoundsException

想到的另一件事是使您的异常更通用一些,例如PrimaryExternalStorageNotReadyException(不准备任何东西,而不仅仅是写)和PrimaryExternalStoragePermissionException(实际上丢失的写或读权限可能作为异常参数传递)。

09-11 20:57