Throwable 类是 Java 语言中所有错误或异常的超类。有两个子类:Error(错误)、 Exception(异常)。
1、Error:通常由JVM抛出,程序本身无法修复错误。出现问题后,应该在程序以外查找,解决问题。
常见的子类有:VirtualMachineError(InternalError, OutOfMemoryError, StackOverflowError, UnknownError)
2、Exception:
(1)异常来源:
一是Java语言本身定义的一些基本异常类型,二是用户通过继承Exception类或者其子类自己定义的异常。Exception 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。
(2)异常处理机制
第一、在方法中用try...catch语句捕获并处理异常,catach语句可以有多个,用来匹配多个异常。
第二、对于处理不了的异常或者要转型的异常,在方法的声明处通过throws语句抛出异常。即由上层的调用方法来处理。
(3)异常分类:
a、不受检查异常(uncheckedexception)
主要是运行时异常(RuntimeException类及其子类),特点是JVM不去检查它,也就是说,当程序中可能出现这类异常时,即使没有用try...catch语句捕获它,也没有用throws字句声明抛出它,还是会编译通过。例如,当除数为零时,就会抛出 java.lang.ArithmeticException异常。
常见异常:
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, ClassCastException, EmptyStackException, IllegalArgumentException, IndexOutOfBoundsException(ArrayIndexOutOfBoundsException, StringIndexOutOfBoundsException), JMRuntimeException, NegativeArraySizeException, NoSuchElementException, NullPointerException, SystemException,
b、受检查异常(checkedexcetpion)
除了RuntimeException类及其子类外,其他的Exception类及其子类都属于受检查异常,这种异常的特点是要么用try...catch捕获处理,要么用throws语句声明抛出,否则编译不会通过。
常见异常:
ClassNotFoundException, DataFormatException, IOException, NoSuchFieldException, NoSuchMethodException, ParseException, SQLException, TimeoutException, XMLParseException,
(4)、最佳解决方案
a、对于运行时异常,我们不要用try...catch来捕获处理,而是在程序开发调试阶段,尽量去避免这种异常,一旦发现该异常,正确的做法就会改进程序设计的代码和实现方式,修改程序中的错误,从而避免这种异常。捕获并处理运行时异常是好的解决办法,因为可以通过改进代码实现来避免该种异常的发生。
b、对于受检查异常,没说的,老老实实去按照异常处理的方法去处理,要么用try...catch捕获并解决,要么用throws抛出!
c、对于Error(运行时错误),不需要在程序中做任何处理,出现问题后,应该在程序在外的地方找问题,然后解决。
分享到:
相关推荐
1、 输出的出错信息难以理解; 比如说:应该要提示:“单据编码不允许为空”,却提示:“错误信息:Server Component wrap a Throwable. Exception Type is [javax.ejb.TransactionRolledbackLocalException]” 2、...
第一,理解 Throwable、Exception、Error 的设计和分类 第二,理解 Java 语言中操作 Throwable 的元素和实践 第一,尽量不要
第一,理解 Throwable、Exception、Error 的设计和分类 第二,理解 Java 语言中操作 Throwable 的元素和实践 第一,尽量不要
1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...
1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...
在java的异常结构中有一个父类叫做Throwable,这个父类具有两个子类,分别是: Error Exception 为了便于初学者能更好的理解异常机制,我姑且先列举一些不恰当的例子: 可以这样理解Error 1、你某天...
现在说说我对这些程序代码的理解,说实话,才开始听张老师讲的时候,我感觉很模糊的,但是当我真正理解了之后,觉得这些程序写的真是太好了。象以后我门在学习JAVA 的时候,一定要对每个知识点要慢慢的消化吃透,切...
一、简介当下Java后端的SpringBoot微服务框架大火,原因离不开注解的使用,其简单易配置的注解方式使得更多的社区为其编写适用于...}四、参考HujiangTechnology/gradle_plugin_android_aspectjx深入理解Android之AOP
unit:参数keepAliveTime的时间单位,有7种取值,在TimeUnit类中有7种静态属性(时间单位) workQueue:一个阻塞队列,用来存储等待执行的任务,这个参数的选择也很重要,会对线程池的运行过程产生重大影响,...
框架中的MongoDB项目是我用来作为文件服务器的一个实现,很简单实现了上传下载删除和预览的几个接口,大家可以看源码,有朋友问到秒传怎么做 这里只是简单说一个关键词(MD5)原理自行理解吧 Redis延迟消费的项目是...