异常
一、分为一般异常和运行时异常;
1、 异常处理格式:
try{
}catch(异常对象 变量){
}
当时异常不做处理,后面的程序就不会执行;
多异常处理格式:
try{
}catch(异常对象 变量){
}catch(异常对象 变量){
}catch(异常对象 变量){
}
多异常处理总结:
- 是进行顺序执行,从上到下。
- 如果多个catch 内的异常有子父类关系:
- 子类异常在上,父类在最下,编译通过运行没有问题
- 父类异常在上,子类在下,编译不通过。(因为父类可以将子类的异常处理,子类的catch处理不到)。【多个异常要按照子类和父类顺序进行catch】
- printStackTrace() 打印栈信息(打印异常信息)
2、throw和throws
throw和throws的区别
a. 相同:都是用于做异常的抛出处理的。
不同点:
a. 使用的位置: throws 使用在函数上,throw使用在函数内
b. 后面接受的内容的个数不同:
c. throws 后跟的是异常类,可以跟多个,用逗号隔开。
d. throw 后跟异常对象
3、finally:无论如何都会执行
格式:try{}catch(){}finally{};
4、final、finally、finalize
Final 静态变量的修饰;
Finally 一般是和try catch 联合使用;
Finalize 在垃圾回收器回收垃圾之前,会先调用finalize方法;
5、自定义异常步骤:
1) 写一个异常类继承Exception
2) 写一空有的构造方法
3) 写一个有参数的构造方法。
如:
package Monday0925;
public class CustomException extends Exception {
public CustomException(){
}
public CustomException(String a){
System.out.println(a);
}
}
-----------------------------------------------------------------
package Monday0925;
public class CustomDemo {
public double balance;
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
//自定义一个异常,当余额小于50的时候就提示余额不足;
public double ba(double balance)throws CustomException{
if(balance<50d){
throw new CustomException("余额不足50,请及时充值");
}
return balance;
}
public static void main(String[] args) {
CustomDemo cd=new CustomDemo();
try {
cd.ba(60d);
} catch (CustomException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}