黑马程序员_java基础之IO(异常,文件)

------- android培训java培训、期待与您交流! ----------

1.Throwable 类

1.1异常: 

就是程序在运行的时候,出现的错误是 Java 语言中所有错误或异常的超类
 throwable的分类
Error 错误
  OutOfMemoryError 内存溢出
 StackOverflowError 栈溢出
  Exception 异常
 编译期异常: 在代码编写好后,编译的时候产生的异常
ParseException 解析异常
  运行期异常: 代码编译的时候没出错,运行的时候出现了异常
  ConcurrentModificationException 并发修改异常
 NullPointerException 空指针异常
 ArrayIndexOutOfBoundsException 数组角标越界异常
StringIndexOutOfBoundsException 字符串角标越界异常

1.2处理方式

 格式1:try..catch  try{
可能产生异常的代码
} catch (异常类名 异常对象名) {
  解决异常的代码
}finally {
必须要进行的操作
释放垃圾对象
 }
格式2: 把当前 异常 声明在方法上
修饰符 返回值类型 方法名 (参数列表) throws 异常类名 {....}

1.3多个异常的情况

  方式1: 一个个异常,单独处理
  方式2: 所有的异常一起处理
  一个try 对应着多个catch
处理步骤:
当try语句中,出现了异常的时候,那么,try语句中下面的代码不执行了
  跳转到当前异常对应的异常处理的catch语句中
当catch语句中的代码执行完毕后, 执行 try...catch语句块 后面的代码
格式: try{
可能出现异常的代码
 } catch (异常类名1 对象名1) {
 异常处理方式
 } catch (异常类名2 对象名2) {
 异常处理方式
 } catch (异常类名3 对象名3) {
 异常处理方式
 } ....
特点:
同一时刻,只能处理一个异常
  每个异常的处理方式可以不同
  方式3:jdk7的新的异常处理方式(平级异常),所有的异常 一起处理, 并且处理的方式也是相同的
格式: try{
可能出现异常的代码
  } catch (异常类名1 | 异常类名2 | ... 异常对象名) {
  异常处理方式
  }
特点  同一时刻,只能处理一个异常
  每个异常的处理方式一样

1.4处理注意事项

当多个异常出现了 子父类关系的时候,需要主要注意:父类的异常要在子类异常的下面
如果在执行到finally之前,JVM退出了, 那么,不会再执行 finally中的代码

1: 子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类。
2: 如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
3: 如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws

2.异常处理的两个问题

2.1 throw 与 throws 的区别

throw:  在方法的内部使用
后面跟着一个异常对象
  肯定会抛出一个异常
  抛出的异常的解决方式,可以try..catch解决,也可以抛出现throws解决
  throws: 在方法声明上使用
  跟着一个或者多个异常类名, 多个异常类名 使用 逗号 分开
  可能会抛出一个或多个异常,也可能一个也不抛出
  抛出的异常的解决方式, 需要调用者来解决0

2.2在异常处理语句中, try中有一个return 语句, 问finally语句是否会执行? 如果会,在return前执行还是return后执行?

会,在return语句执行的中间运行的finally语句
1: return x; //10 这个时候 只是进行了返回的标记,同时,确定要返回的数据值,没有真正的执行返回语句
2: 执行了 finally语句
3: 再回到return x; 返回当时的x值
案例
public class ExceptionTest2 {
	public static void main(String[] args) {
		//method ();
		//int result = method1(10);
		int result = method2(10);
		
		System.out.println(result);
		System.out.println("结束了");
		
	}

	private static int method2(int x) {
		try{
			System.out.println(x/0);
		} catch (ArithmeticException e) {
			System.out.println("异常产生了");
			return x;//10
		} finally {
			System.out.println("解决一下");
			x++;// x=11
		}
		
		return 0;
	}

	private static int method1(int x) {//x= 10
		try{
			System.out.println(x/0);
			return x;//11
		} finally {
			System.out.println("解决一下");
			x++;// x=11
		}
	}

	private static void method() {
		try{
			System.out.println(3/0);
			return ;
		} finally {
			System.out.println("解决一下");
		}
	}
}

3.File

  文件和目录路径名的抽象表示形式 

 3.1构造方法:

  public File(String pathname) 把指定文件或文件夹的路径作为字符串传递给File对象
  public File(String parent, String child)  把指定文件夹,和指定的文件或文件夹作为字符串传递给File对象
  public File(File parent, String child)  把指定File对象,和指定的文件或文件夹作为字符串传递给File对象

3.2File中的功能

  创建文件 public boolean createNewFile()
创建文件夹 public boolean mkdir() 创建单层文件夹
public boolean mkdirs()创建多层文件夹
删除文件 或者 删除空文件夹
public boolean delete()  java程序删除的内容 不走回收站,删除要小心
判断功能 public boolean canRead() 当前的文件内容是否可读
  public boolean canWrite() 当前的文件内容是否可写
 public boolean exists() 当前File所代表的文件或文件夹是否存在
 public boolean isAbsolute() 当前File所代表的路径 是否为 绝对路径
 public boolean isDirectory() 是否为一个文件夹
 public boolean isFile() 是否为一个文件
 public boolean isHidden() 是否为隐藏文件
获取功能 针对于 文件
public String getAbsolutePath() 返回File 所代表文件或文件夹的绝对路径
public String getName() 获取名字
public String getPath() 获取路径,获取的是File对象当前所封装的路径对象
public long lastModified() 返回FIle对象 最后一次修改时间
public long length() 返回文件的长度
针对于文件夹
public String[] list() 返回当前File所代表的目录中,所有的文件和文件夹的String对象
  public File[] listFiles() 返回当前File所代表的目录中,所有的文件和文件夹的File对象
  public static File[] listRoots() 返回当前电脑上所有的盘符信息
重命名  public boolean renameTo(File dest)重新命名此抽象路径名表示的文件

4.递归

  方法定义中调用方法本身的现象 method1(){
method1();
}

斐波那契数列 1 1 2 3 5 8 13 21......
public class DiGuiTest2 {
	public static void main(String[] args) {
		//int count = shulie(20);
		int count = shulie(7);
		System.out.println(count);
	}

	//斐波那契数列 的结果
	private static int shulie(int n) {
		if (n==1 || n==2) {
			return 1;
		} else {
			return shulie(n-1) + shulie(n-2);
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值