异常的分类
1.运行时异常(打印太执行时才会报错)
2.编译时异常(对可能发生异常的代码报错 强制在编译时处理异常)
实例: 写一个类
1.抛出运行时异常的方法
2.抛出编译时异常的方法
3.计算圆面积的方法
class Test {
// 抛编译时异常
public void fun1() throws Exception {
throw new Exception("我是编译时异常");
}
// 抛运行时异常
// 当你这个方法抛的是运行时异常时 方法上可以省略
// throws RuntimeException
public void fun2() {
throw new RuntimeException();
}
// 计算圆面积
public double getArea(int r) {
if (r <= 0) {
// 半径小于0 再向下计算没有意义
// 希望程序停下来 让程序员去修改代码
// 可以抛出一个异常 运行时异常
throw new RuntimeException("你有病啊 半径小于0");
}
return 3.14 * r * r;
}
}
Test测试结果
public class Test {
public static void main(String[] args) {
Test test = new Test();
//test.fun2(); 运行时异常 运行时才报错
//test.fun1(); 编译时异常 不处理就报错
double area = test.getArea(5); // 对你这个面积进行操作
System.out.println(area);
}
}
继承中的异常
注意: 子类继承父类,重写父类的方法
调用带异常的方法时
如果父类中的方法没有抛出异常,那么子类在重写父类这个方法的时候
也不能抛出异常 只能用try---catch处理
例:
无限输入整数 存放到集合中 打印 输入quit停止
希望在输入字符串的时候 让程序也能继续运行
public static void main(String[] args) {
System.out.println("请输入整数");
Scanner scanner = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
while (true) {
String string = scanner.nextLine();
if (string.equals("quit")) {
break;
}
// 异常处理
try {
int num = Integer.parseInt(string); // 报异常 下句不执行
list.add(num);
} catch (Exception e) {
System.out.println("看清楚 请输入整数!");
}
}
// 打印集合
System.out.println(list);
}
File类
File类 : 封装了操作文件 或 文件夹的方法
1.表示一个文件
2.表示一个文件夹
3.表示一个文件路径
文件路径 分为 绝对路径 和 相对路径
绝对路径: 该文件在你当前硬盘上的路径 唯一的 (以"/"开头)
相对路径: 以文件所在工程为参照物的路径 (不以"/"开头)
文件类对象的三种构造方法
1.
File file1 = new File("/Users/myCp/Desktop/lna"); //直接传入文件的路径 创建file对象
2.
File file2 = new File("/Users/myCp/Desktop", "lna"); //传入父级路径,和文件名 创建file对象
3.
File parent = new File("/Users/myCp/Desktop"); //利用一个文件和一个路径 创建File对象
String child = "lna";
File file3 = new File(parent, child);
创建文件的方法
File file1 = new File("/Users/myCp/Desktop/lna/wl.txt");
file1.createNewFile(); // 返回的是布尔值
该方法不会重复创建文件 只创建一次,且只能创建文件(不写后缀也是创建的文件)
创建文件夹的方法
File file2 = new File("/Users/myCp/Desktop/lna/a/b");
file2.mkdir();
mkdir方法 不能创建多级文件夹File file3 = new File("/Users/myCp/Desktop/lna/c");
file3.mkdirs();
mkdirs方法 可以创建多级文件夹或单级文件夹Feile类中的方法
String name = file.getName(); // 获取文件名
boolean b1 = file1.isFile(); // 判断是否是文件
boolean b1 = file1.isFile(); // 判断是否是文件夹
boolean b3 = file1.isHidden(); // 判断是否是隐藏文件
删除方法boolean b1 = file1.delete();
删除时慎重 (直接被删掉 不会进入回收站) 删除文件夹时,只能删除空文件夹
获取文件夹下的文件名(一级文件)
File file1 = new File("/Users/lanou/Desktop/lna");
// 获取文件夹下的所有文件 以字符串数组形式
// 获取的是文件名(一级文件名)
String[] list = file1.list();
for (String string : list) {
System.out.println(string);
}
// 获取文件夹下的所有文件 以文件数组形式
// 获取的是文件的绝对路径
File[] listFiles = file1.listFiles();
for (File file : listFiles) {
System.out.println(file);
}
获取文件夹下所有文件(遍历)
File[] listFiles = file.listFiles();
for (File f : listFiles) {
// 判断 如果不是文件夹 直接打印
if (f.isDirectory()) {
// 是文件夹 继续遍历
printFile(f);
} else {
// 是文件
System.out.println(f);
}
}
---------------------------------------------------------------------