Java的抛出异常、IO包中的File

编译异常:

代码编译过程中,系统报错,强制处理(try或抛(throw))。

运行时异常(RuntimeException):

概论:
程序在执行过后,由调用者或者调用者上级报出的错误信息、错误位置提示。
注意:
在抛出运行时异常时,方法声明上可以不用throws标识(与编译异常进行区分)
在编译代码时,可以对可能出现运行时异常的代码不进行处理,但在运行时,程序将到出现异常处,停止运行。

抛出运行时异常的好处:

方法中抛出运行时异常,方便记录错误,修改对应代码,确保程序执行下去

继承类之间方法重写异常的关系:

1.父类的方法抛出异常,子类的重写方法可以抛出异常,也可不抛出异常。
2.父类的方法没有抛出异常,子类的重写方法一定不能抛出异常。
3.子类重写方法中调用了一个异常的方法,只能选用try...catch处理,不能抛出

抛出异常案例:

需求:从键盘录入两个整数,实现两数相加、两数相除。
/*
 * 封装一个有两个数的对象类
 * 要求:类中有两个int数字 作为成员变量
 */
public class MyNum{
    public MyNum() {
        super();
        // TODO Auto-generated constructor stub
    }
    public MyNum(int num1, int num2) {
        super();
        this.num1 = num1;
        this.num2 = num2;
    }
    public int getNum1() {
        return num1;
    }
    public void setNum1(int num1) {
        this.num1 = num1;
    }
    public int getNum2() {
        return num2;
    }
    public void setNum2(int num2) {
        this.num2 = num2;
    }
    @Override
    public String toString() {
        return "除数:" + num1 + ", 被除数:" + num2 ;
    }   
}
/*
 * 获取数字的工具类
 * 要求:从键盘输入 输入的是字符串要处理异常重新输入
 */
public class IntTools {
    private IntTools() {
    }
    public static int getIntNum(){
        System.out.println("请输入一个数:");
        Scanner scanner = new Scanner(System.in);
        String string = scanner.nextLine();
        try {
           int num = Integer.parseInt(string);
           return num;
        } catch {
            System.out.println("输入错误,请重新输入!!");
            return getIntNum();
        }
    }
}
/*
 * 封装自定义异常类
 * 要求:类名表示除法除数不能为0 
 */
public class DivNotZeroException extends Exception {
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public DivNotZeroException() {
        super();
        // TODO Auto-generated constructor stub
    }

    public DivNotZeroException(String message) {
        super(message);
        // TODO Auto-generated constructor stub
    }
}
/*
 * 封装运算类
 */
public class Operact {
    /*
     * 获取两数对象
     */
    public MyNum getMyNum() {
        int num1 = IntTools.getIntNum();
        int num2 = IntTools.getIntNum();
        MyNum myNum = new MyNum(num1, num2);
        return myNum;
    }
    /*
     * 获取 要做的运算法则 加法或者除法 
     * 输入数字1是加法 2是除法(输入错误 要重新输入)
     */
    public String getChooseMethod() {
        System.out.println("1.加法;2.除法");
        int num = IntTools.getIntNum();
        if (num == 1) {
            return "+";
        }else if (num == 2) {
            return "/";
        }else {
            System.out.println("输入错误,请重新输入!!");
            return getChooseMethod();
        }
    }
    /*
     * 加法方法
     */
    public int sum(MyNum myNum) {
        return myNum.getNum1() + myNum.getNum2();
    }
    /*
     * 除法方法(要求捕获异常 并抛出自定义异常)
     */
    public int div(MyNum myNum) throws DivNotZeroException {
        try {
            return myNum.getNum1() / myNum.getNum2();
        } catch (ArithmeticException e) {
            throw new DivNotZeroException("除数为0");
        }       
    }
    /* 
     * 根据运算法则 执行运算 并返回运算结果
     * 除数如果是0 要重新输入数字 
     */
    public int getResultByOperactAndMyNum(String operact, MyNum myNum) {
        if (operact.equals("+")) {
            return sum(myNum);
        }       
        try {
            return div(myNum);
        } catch (DivNotZeroException e) {
            System.out.println(e.getMessage());
            System.out.println("请重新输入两个数");
            MyNum newNum = getMyNum();
            return getResultByOperactAndMyNum(operact, newNum);
        }
    }
}
/*
 * 测试类
 */
public class Test {
    public static void main(String[] args) {
        Operact operact = new Operact();
        String chooseMethod = operact.getChooseMethod();
        MyNum myNum = operact.getMyNum();
        int result = operact.getResultByOperactAndMyNum(chooseMethod, myNum);
        System.out.println(result);
    }       
}

File:

可以操作文件,可以操作文件夹,可以操作文件路径

File的方法:

//  File的静态成员变量
public static void fun() {
    //  mac系统下 路径分隔符:(冒号)
    //  Windows系统下 是;(分号)
    String pathseparator = File.pathSeparator;
    System.out.println(pathseparator);
    //  分隔符  /Users/wanglong/Desktop 
    //  mac系统  /
    //  Windows \
    String separator = File.separator;
    System.out.println(separator);
}
//  构造方法
public static void fun() {
    File file = new File("/Users/lanou/Desktop/Test");
    System.out.println(file);
    boolean b1 = file.exists();
    System.out.println(b1);
    File file1 = new File("src/wl");
    System.out.println(file1.getAbsolutePath());
    boolean b2 = file1.exists();
    System.out.println(b2);

    String parent = "/Users/lanou/Desktop";
    String child = "Test";
    File file2 = new File(parent, child);
    boolean b3 = file2.exists();
    System.out.println(b3);

    File f = new File("/Users/lanou/Desktop");
    File file3 = new File(f, child);
    System.out.println(file3.delete());
}
//  创建文件方法
public static void fun() throws IOException {
    File file = new File("/Users/lanou/Desktop/Test/kkk");
    boolean b1 = file.createNewFile();
    System.out.println(b1);
    File file1 = new File("src/dp.txt");
    boolean b2 = file1.createNewFile();
    System.out.println(b2);
    File file2 = new File("/Users/lanou/Desktop/Test/g");
    boolean b3 = file2.mkdirs();
    System.out.println(b3);
}
//  删除
public static void fun() {
    File file = new File("/Users/lanou/Desktop/Test/b");
    boolean b1 = file.delete();
    System.out.println(b1);
}
//  判断
public static void fun() {
    File file = new File("/Users/lanou/Desktop/Test/haha.txt");
    boolean b1 = file.isDirectory();
    boolean b2 = file.isFile();
    System.out.println(b1);
    System.out.println(b2);
}
//  获取路径
public static void fun() {
    File file = new File("/Users/lanou/Desktop/Test/www.txt");
    String path = file.getPath();
    System.out.println(file.toString());
    System.out.println(path);
    String name = file.getName();
    System.out.println(name);
    long length = file.length();
    System.out.println(length);
    File parentFile = file.getParentFile();
    System.out.println(parentFile);
    File file = new File("/Users/lanou/Desktop/Test");
    String[] list = file.list();
    for (String string : list) {
        System.out.println(string);
    }   
    System.out.println("-----------------------------------");
    File[] listFiles = file.listFiles();
    for (File f : listFiles) {
        System.out.println(f);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值