`
qdpurple
  • 浏览: 272986 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

平台异常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()方法?


:在抛出时未调用,在捕获时,调用. 解决.
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics