读书人

平台错误1

发布时间: 2012-12-20 09:53:21 作者: rapoo

平台异常1

学习java,离不开给Exception打交道,现通过总结简单问题来学习一下

1.异常分类

异常分为:运行异常/非运行异常
java编译器要求必须对非运行异常必须进行处理(捕捉或抛出),对运行时异常可以不处理.
(1)非运行异常(编译不能通过提示:Unhandled exception type...):
如文件读写时必须进行IOExecption的捕捉.
(2)RuntimeException(所有运行异常的父类)代表运行时由JAVA虚 拟机生成的异常,原因是编程错误。如:
?IndexOutOfBoundsException/ NullPointerException/ IllegalArgumentException

?

2. 什么时候进行try/catch,什么时候进行throws?

见平台异常2 - try/catch or throws

?

3.什么时候自定义异常?

总结:为了给软件试用者提供较规范的错误信息(如 errorCode + ?errorMessage), 使用自定义异常,

这样比单独每个错误直接记录log日志更加简明,便于后期维护.


4.自定义异常的使用?

首先定义的异常需 extends ?Throwable 类,


5.平台的自定义异常?

?

DAOException.java

P2PException.java

PlatformConnectLogOnException.java

PlatformDeliveryException.java

PlatformDownloadException.java

PlatformException.java

PlatformSFTPException.java

PlatformTransformException.java

SyncException.java

MessageException.java

NoAuthenticatedException.java

NoAuthorizedException.java

.....

平台在各个模块基本都定义了本模块的异常, 异常的发生 将会使程序不能正确运行,使用这些自定义异常能使客户从日志中清楚知道 异常代码+异常信息, 使得我们的后期维护具有较高效率.

在以后开发中,当遇到这些情况时,已尝试使用自定义异常.

6.常见的类
6.1 java.lang.Throwable

?所有Error/Exception 的父类; 定义了常见的构造方法如?Throwable(String?message, Throwable?cause);?方法 如printStackTrace()等

?

6.2 Exception

?

所有异常的父类

?

?

7.问题:

(1) 每个自定义异常类都有private static final long serialVersionUID = -7564015249480613950L;

这个value是怎么得来的?

为什么可以重复? 见下1L

1.2 异常中定义了大量ErrorCode ,这些Errorcode值怎么确定的?

如PlatformConnectLogOnException.java中 从:10001开始 , ?serial~Id: ?-3966244863223955260L

PlatformDeliveryException.java中 从40001开头?? ??1L

PlatformDownloadException.java从 20001开头 ? ??-5174978579291077870L

PlatformTransformException.java从30001开头 ? ? ?1L

通过分析知:每类异常都以不同的万位数开头, 这样可以方便从日志中知道是哪个功能的异常.

?

(2) 在com.al9202.platform.common.exception包中定义了4个异常类和一个抽象异常类PlatformException.java

这些子类异常都重写了logErrorMessage()方法,但在抛出时,通过构造方法完成调用,并没有调用?logErrorMessage()方法?


:在抛出时未调用,在捕获时,调用. 解决.

读书人网 >编程

热点推荐