java异常Exception
来源:互联网 发布:医生转行知乎 编辑:程序博客网 时间:2024/06/06 00:12
在Java中,异常类的结构层次图如下图所示:
在Java中,所有异常类的父类是Throwable类,Error类是error类型 异常的父类,Exception类是exception类型异常的父类,RuntimeException类是所有运行时异常的父 类,RuntimeException以外的并且继承Exception的类是非运行时异常
典型的RuntimeException包括NullPointerException、IndexOutOfBoundsException、IllegalArgumentException等。对于运行时异常,java编译器不要求必须进行异常捕获处理或者抛出声明,由程序员自行决定。
典型的非RuntimeException包括IOException、SQLException等。java编译器强制程序员必须进行捕获处理,对于非运行时异常如果不进行捕获或者抛出声明处理,编译都不会通过
1、使用try和catch关键字进行异常捕获和处理。
- 三个块执行的顺序为try—>catch—>finally。
- 在有多个catch块的时候,是按照catch块的先后顺序进行匹配的,一旦异常类型被一个catch块匹配,则不会与后面的catch块进行匹配。
无论try块或者catch块中是否包含return语句,都会执行finally块。
注意千万不要在finally块中使用return,因为finally中的return会覆盖已有的返回值。
2、用throws关键字在方法后声明抛出异常
如果最终将异常抛给main方法,则相当于交给jvm自动处理,此时jvm会简单地打印异常信息
throws 和throw
throws出现在方法的声明中,表示该方法可能会抛出的异常,允许throws后面跟着多个异常类型
throw只会出现在方法体中,当方法在执行过程中遇到异常情况时,将异常信息封装为异常对象,然后throw出去
异常处理注意点:
只在必要使用异常的地方才使用异常,不要用异常去控制程序的流程
切忌使用空catch块
用Log日志将该异常进行记录,以便日后方便更新和维护检查异常和非检查异常的选择
注意catch块的顺序, 不要把上层类的异常放在最前面的catch块(上层拦截掉,只匹配一个catch)。
不要将提供给用户看的信息放在异常信息里。
展示给用户错误提示信息最好不要跟程序混淆一起,比较好的方式是将所有错误提示信息放在一个配置文件中统一管理
避免多次在日志信息中记录同一个异常。
异常处理尽量放在高层进行。
尽量将异常统一抛给上层调用者,由上层调用者统一之时如何进行处理。如果在每个出现异常的地方都直接进行处理,会导致程序异常处理流程混乱,不利于后期维护和异常错误排查。由上层统一进行处理会使得整个程序的流程清晰易懂。
- 在finally中释放资源。
有使用文件读取、网络操作以及数据库操作等,记得在finally中释放资源。这样不仅会使得程序占用更少的资源,也会避免不必要的由于资源未释放而发生的异常情况。
- 【java 异常Exception 】 集
- Java 异常 Exception
- java 异常Exception 集
- 浅谈java异常[Exception]
- 浅谈java异常[Exception]
- 浅谈java异常[Exception]
- java异常处理Exception
- java异常Exception
- 浅谈java异常[Exception]
- 浅谈java异常[Exception]
- Java 异常Exception
- 浅谈java异常[Exception]
- 浅谈java异常[Exception]
- 浅谈java异常[Exception]
- 浅谈java异常[Exception]
- Java异常处理Exception
- JAVA 异常 exception
- java异常(Exception)
- android 自动弹出软键盘(输入键盘)
- PAT-B 1002. 写出这个数 (20) Stupid!
- ios7,viewcontroller, edgesForExtendedLayout
- 监听手机电话状态改变的两种方法
- java中的修饰符以及作用范围详解图解
- java异常Exception
- 解决ThinkPHP错误Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'
- tcp keepalive介绍与netty 心跳实现
- C#对excel文件的基本操作
- servlet的生命周期
- Fragment案例
- Prim(普利姆)算法+Kruskal(克鲁斯卡尔)算法
- iOS-生成国际化包-配置App多语言支持
- Vijos P1153 猫狗大战(动态规划,背包)