黑马程序员技术交流社区
标题:
异常处理学习笔记
[打印本页]
作者:
左岸那片海
时间:
2015-8-20 16:09
标题:
异常处理学习笔记
异常:
异常包括Error和Exception两大类,都继承与Throwable,它具有可抛性
注意事项:遇到异常时,要么抛出要么try{}catch(){}finaly{}
如果抛出异常,调用的方法使用关键字Throws,并且每一层都要抛出异常
如果try异常时,catch语句里最好不要写输出语句,实际开发时会形成日志记录
*函数内部出现throw抛出异常时,要么抛出,要么try catch处理
*一般情况下,函数内部出现异常,函数上需要声明
*finally里面是一定执行的语句,一般用于关闭资源
自定义异常必须继承Exception
throws和throw的区别
throws使用在函数上,throw使用在函数内
throws后面跟的是异常类,可以跟多个,用逗号隔开
throw后跟的是异常对象
运行时异常:RuntimeException
如果在函数内抛出该异常,函数上可以不用声明,编译一样通过。
如果在函数上声明了该异常。调用者可以不用进行处理。编译一样通过。
原因是运行时无法继续运算,希望对程序修正
无法运算的异常就继承于RuntimeException
异常在子父类覆盖中的体现:
1.子类覆盖父类有异常的方法时,只能抛出父类异常或者该异常的子类。
2.父类多个异常,子类只能抛出父类异常的子集
3.如果父类或接口的方法没有抛出异常,那么子类覆盖方法时不能抛出异常。
如果子类方法发生了异常,就必须进行try处理,绝对不能抛。
/*
需求:对于除数是负数的情况也视为异常
*/
class FuShuException extends Execption{
private int num;
FuShuException(String msg,int num){
super(msg);
this.num = num;
}
public int getNum(){
return num;
}
}
class Demo{
int div(int a,int b) throws FuShuException{
if(b<0)
throw new FuShuException("出现了除数是负数的情况 / FuShu",b);
return a/b;
}
}
class ExceptionDemo{
public static void main(String[] args){
Demo d = new Demo();
try{
int x = d.div(4,-2);
System.out.println("x = "+x);
}catch(FuShuException e){
System.out.println(e.toString());
//System.out.println("除数是负数");
System.out.println("错误的负数是:"+e.getNum());
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2