java异常处理

适配器模式;没有抽象方法的抽象类
接口与子类之间新增一个抽象类去实现这个接口,如然后子类继承这个抽象类,并重写子类需要的功能方法
eg1
package oopdemo1;

public interface Demo1{
    public abstract void way1();
    public abstract void way2();
    public abstract void way3();
    
}
public abstract class Demo2 implements Demo1{   //抽象类的方式实现接口,
    public void way1() {
        
    }

    public void way2() {
        
    }
    public void wqy3() {
        
    }
}
public class ConNoteBook extends Demo2{//子类基础抽线类
    


        // TODO Auto-generated method stub

    @Override
    public void way1() {
        // TODO Auto-generated method stub
        
    }
异常:(程序运行中出现的问题)
java中存在的:1.异常,2.错误
1.描述异常的类;
java.lang.ArrayIndexOutOfBoundsException
描述错误的类;
java.lang.OutOfMemoryError: 内存溢出
异常:在程序运行发生,通常该异常有针对性处理方案
错误;错误无针对性处理方案,系统级别,产生JVM在操作内存上出现的问题
2.异常发生过程:
执行到异常程序时,程序不会往下执行,而是描述异常的位置,问题名称,问题内容,jvm把所2描述的信息封装到一个类中,丢给调用方法的地方
throw  new ArrayIndexOutOfBoundsException("异常的信息“)
3.解决异常的方法
创建异常类的对象,并给对象提供异常信息
把异常类的对象,并且抛出去 使用throw
4.自定义异常
异常类继承RuntimeException
如何书有参函数和有参构造函数,构造函数的调用super()方法
java中,提供了两种处理异常的方法:声明,捕获
声明:  使用关键字throws 对异常进行声明(通常所抛出异常和所声明异常相同)
       格式:修饰符  返回值类型  方法名(参数列表)throws 异常名1,异常名2……{
       //语句
       //Exception(throw) 
       }
捕获: 自己处理异常
          java中捕获的关键字:try catch finally
     1.   try{
         }catch(异常类 引用变量){
             //异常处理代码
           }finally{
             永远会执行的代码
               }
    2. try{
        }catch(异常类 引用变量){
          //处理异常的代码
         }

 

自定义异常:继承RuntimmeException,构造方法必须写 super();
处理异常的方式:
   声明:throws
   捕获:try{
         //捕获可能出现的类
         }catch(Exception ex){
       //处理异常
          }finally{
      //一定会执行的类
        }
区别:throw;抛出异常,书写在方法内
throws:书写在方法上,用来声明该方法中出现的异常,可以声明多个类,用逗号隔开
 

例子:计算矩形的面积

package lang1;

//判断长度数据是否为异常的数据

public class CheckLengthException extends Exception{
    public CheckLengthException() {     //构造函数,下同
        super();
        
    }

    public CheckLengthException(String str) {    //构造函数的调用
        super(str);
        
    }
}

 

package lang1;

//判断宽度数据是否异常

public class CheckWidthException extends Exception{
    public CheckWidthException()
    {
        super();    //继承父类的异常
    }
    public CheckWidthException(String str) {
        super(str);
    }
}

package lang1;

//计算·矩形·的面积

public class Rect {
    private double length;
    private double width;
    public void setLength(double length) throws CheckLengthException{  //声明该方法中可能出现长度数据非法的异常
        if(length<0) {
            throw new CheckLengthException("矩形长度为1非法数据");
            //抛出异常的后面不能写代码
        }
        this.length=length;
    }
    public void setWidth(double width) throws CheckWidthException{
        if(width<0) {
            throw new CheckWidthException("矩形宽度为非法数据");
        }
        this.width=width;
    }
    
    public Rect(double length,double width)throws Exception{//直接声明异常为父类,此时的Exception==CheckLengthException,CheckWidthException
        setLength(length);
        setWidth(width);
        
    }
    //功能,计算矩形的面积
    public double getArea() {
        return this.length*this.width;
        
    }

        
}

package lang1;

//测试

public class Test1 {

    public static void main(String[] args) {
      //捕获异常
        try {
            Rect r=new Rect(-1.2,2.9);
            System.out.println(r.getArea());

        }catch(Exception ex) {
            ex.printStackTrace();//抛出异常
        }
        

    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值