异常分为error和exception,他们都是throwable的子类。
error由jvm抛出,会导致程序的中断。
- StackOverflowError
- OutOfMemoryError
- 如果线程请求的栈深度大于虚拟机所允许的最大深度,将抛出StackOverflowError异常。
- 如果虚拟机在扩展栈时无法申请到足够的内存空间,则抛出OutOfMemory Error异常。
exception是可以控制的,比如下标越界,除0错误等等。
10.0/0可以 10/0不可以
- RuntimeException(运行时异常)
- IOException
异常的分支体系:
- 运行时异常 :Error与RuntimeException。在编译时不会发现,不比处理
- 编译时异常: 除了运行时异常之外的都是,需要在编写代码时处理。
添加异常的手段:
1:try{}catch(异常种类){}finally{}
- Catch可以有很多个
- 捕获的异常需要从小到大
- 引申***:final:特征修饰符,变量,属性,方法,类; finally处理异常try后面,可有可无。 finalize :Object类中一个protected(受保护)的方法,当对象没有任何引用指向的时候---会被GC回收;当对象回收的时候默认调用finalize()方法,若要看到回收结果可以调用重写。
- 处理异常放在方法内部,可能有小问题:下面:①没有异常的时候会执行finally之后返回try里面的值。②:有异常的时候会返回catch 然后finally,然后return最后的值,即try后面的不执行。



深信服笔试题:try{return ;}chtch(){}finally{ } return ;。
2:throws抛出
- 只能在方法上抛出,属性不可以
- 方法,构造
- 可以抛出不止一个异常
3:自己创建异常
- 描述一个异常的类
- 继承:RuntimeException ----> 运行时异常,不需要自己处理
如果是继承Exception ---> 编译时异常(必须添加处理手段)
- 创建一个当前自定义异常的对象,通过throw关键字,主动产生异常
本文详细介绍了Java中的异常处理机制,包括error与exception的区别,常见异常如StackOverflowError和OutOfMemoryError的原因及处理方法,以及如何使用try-catch-finally结构进行异常捕获。此外还讲解了如何自定义异常。
3668

被折叠的 条评论
为什么被折叠?



