什么是异常处理: 是处理代码中问题的一种机制, 也是衡量一门语言是否具有健壮性的标准
异常处理的好处:
如果没有异常处理, 程序发生异常则立即终止
有异常处理, 程序发生异常通过捕获异常并处理异常能让程序继续运行
异常处理的基本语法:
try{
可能出现异常的代码
如果发生了异常, 会自动生成一个异常类的实例
throw new 发烧类();
}catch(感冒类 e){
异常处理一
}catch(发烧类 e){
异常处理二
}catch(Exception生病类 e){
最终处理
}finally{
都会执行的
}
多重catch捕获注意事项:
1. Exception异常类永远放在多重catch的最后
2. 越普遍的异常越先处理
3. 子类异常在父类异常之前处理
注意:
a. 一旦有异常时才会到catch中
b. 不管是try还是catch, 最终都要到finally
c. 在try或catch中加了return关键字,依然还会执行finally
d. 强制退出System.exit(0), 才不会执行finally代码
------------------------------------------------
一. 异常处理
异常体系说明:
Throwable: 所有错误和异常的超类
Error: 代表错误, 不用捕获的严重问题, 不能处理
硬件问题, 系统问题, 网络不通 .....
Exception: 代表异常, 可以捕获的问题
检查时异常: Exception的子类但非RuntimeException的子类
强制规定必须处理的异常, 如果不处理, 连编译都报错
运行时异常: RuntimeException的子类
不用强制处理, 根据需求选择性处理异常, 不处理编译也不报错
一般异常处理分为两种:
1. 利用try{}catch(){}来捕获处理异常(背锅)
2. 将异常抛出, 交给调用者进行异常处理(甩锅)
异常抛出有2个相关关键字
a. throw: 手动抛出一个异常类对象(动作), 写在方法内部
例如: throw new 异常类("异常信息");
b. throws: 在方法后声明异常, 告知调用者此方法可能会有异常抛出, 需要解决
例如: public void test() throws Exception{}
自定义异常: Java虽然已经提供了大量的异常, 但是实际上在开发中却往往不够用
当我们要增加, 修改数据的时候, 有可能会出现错误的数据, 这些错误的数据按理来讲应该抛出异常, 但是这些异常Java没有提供, 所以我们就要自己去写一些异常类
自定义异常一般继承:Exception和RuntimeException
二. 代码块
代码块 : 用{ }包含的一段代码就是代码块
普通代码块 构造代码块 静态代码块 同步代码块(和多线程结合)
构造代码块: 在类中的一块代码块, 每次new对象都会执行
静态代码块: 在构造代码块前加一个static, 只会在首次加载类的时候执行一次
三. 访问修饰符(访问控制权限)
范围 private default protected public
同一个类中 可以 可以 可以 可以
同一个包中 可以 可以 可以
不同包子类 可以 可以
所有类 可以
通常情况下: 属性全部用private修饰, 方法全部用public修饰