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
。但这是一个好方法吗?有没有更好的方法来避免那些长名?
答案 0 :(得分:2)
如果您在程序中经常使用PrimaryExternalStorage
,则可以引入(并记录)PES
之类的缩写并使用PESIsNotReadyToWriteException
,WriteToPESPermissionException
(或PesIsNotReadyToWriteException
,WriteToPesPermissionException
取决于您在camelCased标识符中使用缩写的政策。)
请注意,您的第一个例外中的Is
肯定是多余的。例如,请参阅ArrayIndexOutOfBoundsException
之类的JDK异常不是ArrayIndexIsOutOfBoundsException
。
另一件需要考虑的事情是让你的异常更像PrimaryExternalStorageNotReadyException
(不准备任何东西,不仅仅是写入)和PrimaryExternalStoragePermissionException
(实际缺失的权限是写入或读取可能是传递为异常参数)。
答案 1 :(得分:-1)
为单个异常类创建单独的包primaryexternalstorageexceptions
正在扼杀java中的Packages概念。如果您认为将有超过5或6个异常类属于primaryexternalstorageexceptions
的一部分,那么您可以得到它。我个人认为没有单独的包装。
我建议你同样缩短班级名称:
PrimaryExternalStorageIsNotReadyToWriteException
至PrmyExtlStrgIsNotReadyToWriteException
标准是你现在拥有的,这是一个长类名。无论如何,例外是打包的,你不会很难去一个包并搜索这个类。