java毕向东学习笔记——day10

异常处理语句中的注意事项

  1. finally常用于一定要执行的语句,或者用于关闭资源;
  2. catch语句用于处理异常,如果没有catch则异常就未被处理,如果该异常是检测时异常,则需要声明;
  3. 子类在重写父类的方法时,只可以抛出父类异常的子类或者父类异常,假如确实自己的程序产生了新异常,则应该在内部try….catch处理;

异常练习的代码

/*
    异常的练习
*/

interface Shape{
    public abstract double getArea();
}

class IllegalValueException extends RuntimeException{
    IllegalValueException(String message){
        super(message);
    }
}

class Circle implements Shape{
    private double radius;
    public static final double PI = 3.14;

    Circle(double radius){
        if (radius<0)
            throw new IllegalValueException("半径是负数");
        this.radius = radius;
    }

    public double getArea(){
        return PI*radius*radius;
    }
}

class Rectangle implements Shape{
    private double length,width;

    Rectangle(double length,double width){
        if (length<0||width<0)
            throw new IllegalValueException("长或者宽是负数");
        this.length = length;
        this.width = width;
    }

    public double getArea(){
        return width*length;
    }
}

class ExceptionTest{
    public static void main(String[] args){
        Circle c = new Circle(2);
        double cArea = c.getArea();
        System.out.println(cArea);
        Rectangle r = new Rectangle(-3,4);
        double rArea = r.getArea();
        System.out.println(rArea);
    }
}

异常总结

  1. 异常是把问题封装,将程序正常代码与异常代码相分离;
  2. finally语句有一种情况不执行,就是其前面出现了System.exit(0),JVM直接结束运行;
  3. 子类重写父类出现异常的方法时,只能抛出父类异常或父类异常的子类,如果父类没有抛出异常,则必须在子类方法中try…..catch把异常处理;
  4. 一个try可以对应多个catch,应当将捕获的父类异常放在靠后的catch语句中;
  5. 在处理异常时,应针对异常做出特定的处理方法,不可以只调用printStackTrace方法,也不可以完全不打印;

包package

  1. 包用于封装类;
  2. 假如一个类是属于一个包的,那么这个类的全名为:包名.类名,之后在创建这个类的对象时,应当以全名进行创建;
  3. 值得注意的是,在编译阶段,即使类从属于一个包,编译命令是:javac -d 指定目录 类名.java ,
  4. 然而运行命令是:java 包名.类名;
  5. 假如要运行的class文件不在当前目录下,则要重新设置 set classpath
  6. 当要访问不同包下的类文件时,比如创建该类对象并调用其A方法,则必须将该类和被调用的方法的访问权限设置为public;
  7. 还有一种情况,当出现在A包中的子类继承B包中的父类时,此时要通过A包子类对象调用父类方法时,应当将B包中父类被调用方法设置为protected权限,protected权限介于public和默认只见,可以被自己的不同包子类访问;

import关键字

  1. 为了写代码方便,可以通过import 要导入的包名.要导入的类名;
  2. 这样在创建对象时就不用写一大串了;
  3. import 包名.* 为导入该包下的所有类,但在开发中不这么用,会影响程序运行效率;
  4. import 包名.*只会导入当前包下的class文件,并不会导入下级目录下的class文件;

jar包

  1. 类似压缩包文件,可以压缩package与class文件
  2. jar -cvf classes1.jar p1 p1或者jar -cvf classes2.jar 1.class 2.class
  3. jar 命令中 -c 代表创建,-v 代表在标准输出信息,-f 指定jar文件,-t 查看jar包中的信息;
  4. 假如要在Dos命令行中运行jar包中的类文件,必须设置classpath为x:\xxx\xxx\classes1.jar;
  5. 假如要查看某类在屏幕上打印不完的信息,可以在命令行后加上 >路径\1.txt 就是在指定路径下输出一个1.txt文档记录信息;
  6. jdk的lib目录下有一个tools.jar存储的是编译工具所属类;
  7. jdk目录下src.zip为所有类的源文件;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值