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 {
...
}
如您所见,名称很长,但是我不能从名称中删除
Exception
或PrimaryExternalStorage
。另外,我也不想使用SecurityException
或其他现有的例外,因为这些例外很笼统。我知道长名称不被禁止,但是很难使用和提醒他们。我唯一能想到的就是创建一个名称为primaryexternalstorageexceptions
的程序包,并将名称更改为IsNotReadyToWriteException
和WritePermisionException
。但这是个好方法吗?还有避免这些长名的更好方法吗? 最佳答案
如果您经常在程序中使用PrimaryExternalStorage
,则可以引入(并记录)诸如PES
之类的缩写,并根据您的政策使用PESIsNotReadyToWriteException
,WriteToPESPermissionException
(或PesIsNotReadyToWriteException
,WriteToPesPermissionException
)似乎可以在驼峰标识符中使用缩写的说明)。
请注意,第一个例外中的Is
绝对是多余的。例如,参见诸如ArrayIndexOutOfBoundsException
之类的JDK异常不是ArrayIndexIsOutOfBoundsException
。
想到的另一件事是使您的异常更通用一些,例如PrimaryExternalStorageNotReadyException
(不准备任何东西,而不仅仅是写)和PrimaryExternalStoragePermissionException
(实际上丢失的写或读权限可能作为异常参数传递)。