异常:
异常包括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());
- }
- }
- }
复制代码 |
|