- A+
所属分类:百科知识
异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等
1、异常中最大的父类Throwable
Throwable可以分为两种:
Error
Exception:
- 运行时异常(非受检异常)
- 非运行时异常(受检异常)
Error错误:Error是程序无法处理的错误,它是由jvm产生抛出的,比如OutOfMemoryError,ThreadDeath等,这些异常发生时,jvm会选择终止程序执行
Exception:是程序本身可以处理的异常
- 运行时异常:都是RuntimeException类及子类,如NullPointerException(空指针),IndexOutOfBoundException(数组越界)等,这些异常可以选择捕获处理,或者可以不处理
- 非运行时异常:(受检异常)时除了RuntimeException以外的异常,类型上属于Exception类,从程序语法角度这些异常必须要进行处理,如果不处理,程序不饿能通过编译,如IOException,SQIException
2、try-catch-finally三条语句注意的问题
- try,catch,finally均不能单独使用,三者可以组合使用,组合方式:try…catch, try…catch…finally, try…finally ,其中catch可以有一个或者多个,finally语句最多只能有一个
- 三个语句块中变量的作用域为代码块,分别独立的不能互相访问,如果要在三块中都可以访问,就把变量定义到这些块外边
- 如果存在多个catch块,最多只会匹配一个异常类且执行该catch块代码,而不会在执行其他catch块,且匹配顺序是从上到下,最多只会匹配一个异常类,也就是说也可以一个异常类都不执行
- catch捕获的异常类不能重复,且先捕获子类异常再捕获父类异常
- 无论try中语句有没有问题,finally中的语句一定执行,finally为程序提供统一的出口,保证程序状态的统一管理,通常情况下finally中进行资源的关闭清除工作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
package com.exception; public class Test { public static void main(String[] args) { int [] a= new int [ 5 ]; try { for ( int i = 0 ; i < 10 ; i++) { a[i]=i; } //空指针 } catch (ArrayIndexOutOfBoundsException e){ //弹出出错的地方 System.out.println( "1" ); e.printStackTrace(); //访问异常,数组越界 } catch (NullPointerException e){ System.out.println( "2" ); e.printStackTrace(); //无论有错与否,finally最终执行 } finally { System.out.println( "都能执行" ); } System.out.println( "---------------" ); } } |
3、final-finally-finalize的各作用
- final:用于定义常量的关键字
- finally:异常中总能执行的代码块
- finalize() :垃圾回收,该方法是系统调用,不用程序员手动调用
4、throws关键字
- 定义一个方法的时候可以使用throws关键字声明,表示该方法时不处理该异常,而是交给方法调用者处理该异常
- 在定义方法时,throws关键字可以程序员自主选择使用,如果使用了,那么说明该方法时不处理该异常的
- 如果主方(main)也使用throws关键字,那么就意味着主方法也不处理异常,最后留给jvm处理,jvm处理异常就是终止程序
- throws抛出一个子类异常,调用该方法的调用者可以不必须处理该异常
注意:
throw关键字:是可以自定义异常,也就是抛异常,抛出的时候是一个异常类的对象
5、throws和throw的区别
throws:
- 用在方法声明之后,跟着的是异常类名
- 可以跟多个异常类,用逗号隔开
- 表示抛出异常,有该方法的调用者处理
- throws表示出现异常的一种可能性,并不一定会发生异常
throw:
- 用在方法体内,跟着的是异常对象
- 只能抛出一个异常对象
- 表示抛出异常,有方法体内语句处理
- throw抛异常是一定会发生,并不是一种可能
代码表示:
到此这篇关于Java异常Exception详细讲解的文章就介绍到这了
历史上的今天:
- 2021: 如何在VISTA下安装AutoCAD软件?
- 2021: CAD的参数设置
- 2021: AutoCAD2011在独立显卡电脑上运行时出现迟滞、卡的现象解决方案
- 2021: 安装autocad2012的错误提示,怎么解决?
- 2021: 重新安装AutoCAD2010提示已经安装

自学设计网
微信扫一扫领取设计学习资料/本站会员