学习java第十七天

学习java第十七天

异常:编译运行时发生的错误。
异常的对象是 Throwable
异常的分类
编译时异常: 也就是在运行之前就报错
运行时异常 :编译没有错但运行时报错

Throwable 类是 Java 语言中所有错误或异常的超类
Error 很严重的错误,一般是jvm报的错。(要改源码)
Exception 这个不是很严重的异常,但必须解决。
RuntimeException 运行时异常,开发人员不需要去处理,是由jvm来给其处理
jvm 自带处理异常:

  1. 位置,时间,异常的信息 打印出来
  2. 把程序进行终止

异常处理
jvm处理异常:如果程序发生了异常,方法或者是类只是声明了异常而并没有来处理这个异常,最后由 jvm来处理
手动处理异常:抛出异常,让调用者处理 (捕获异常)

关键字:
try catch finally throw throws

//第一种
try {
	可能异常的代码
}catch (异常的类型 声明,比如控制针异常,算术异常等等){
	发生异常之后执行 这里面的代码           
}
//执行try,没有异常跳过catch,有异常执行catch{}的内容
//也有多个catch形式
try{
	可能异常的代码
}catch (异常类型声明1){
	发生异常类型1后执行的代码
}catch (异常类型声明2){
	发生异常类型2后执行的代码
}
//多个catch时,先写小的异常,在写大的异常

//第二种形式(常用)
try {
	有可能发生异常代码
}catch (异常的类型申明){
	发生异常类型之后执行的代码           
}finally {
	不管发生不发生异常都会执行这里面代码
	//finally的作用一般是关闭和释放资源
}
//除非在try中已经终止了jvm, 
//比如语句:System.exit(0);

//第三种方式: (不常用) 
try {
	可能异常的代码
}finally {
	不管发生不发生异常都会执行这里面代码
	//finally的作用一般是关闭和释放资源
}
//这里面并没有catch捕获异常

常见的异常:
ArithmeticException 算术异常:
ParseException 格式转化异常错误
java.lang.NullPointerException 空指针异常
编译时异常:Exception
运行时异常:RuntimeException
throw和throws:
throw:
声明异常的格式: throw new 具体的异常; 这样可以在方法里声明自己想声明的异常
注意点:

  1. 声明的异常必须写在方法里
  2. 声明的异常必须是Exception 是子类或者是自己
  3. 声明的异常如果是运行时异常可以不做处理,其它的都要做处理

throws: 抛出异常
自己不处理,让调用者去处理
语法: throws 具体的异常;
注意点:

  1. 必须写在方法的小括号后面
  2. 声明的异常必须是Exception 是子类或者是自己
访问修饰符 返回值类型 方法名() throws 异常类型1,异常类型2{
	方法体;
	throw new 异常类型1;
}

throw 是异常声明 throws用于异常抛出
throw 确实会发生异常 throws异常不一定会出现
throw后面只能跟一个 throws可以跟多个
throw与throws搭配使用

Throwable
子类没有什么特别的方法
常规的方法:
public StackTraceElement[] getStackTrace() 打印其堆栈信息,(也就异常信息)
public String getMessage() 返回此 throwable 的详细消息字符串。
public String toString() 返回此 throwable 的简短描述

自定义异常
继承父类一般分为两种情况
第一个是继承 RuntimeException
第二种是 Exception(常用)
一般是重写父类的构造方法。

//重写父类异常构造方法
//一般自定义异常的名字是:xxxException    以Exception 进行结尾
// 栗子:
public class MyException extends Exception{
    public MyException() {
    }
    public MyException(String s) {
        super(s);
    }
}

File:文件和目录路径名的抽象表示形式。
导包是java.io.File;
路径:

  1. 绝对路径 也就是根路劲(也就是到具体的盘符)
  2. 相对路径 (也就是有参照物)
    Windows: 根路径也就是其盘符 UNIX: 表示一个斜杠
    注意点:File 类的实例是不可变的;一旦创建File 对象表示的抽象路径名将永不改变

构造方法:
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例
public File(String parent,String child) parent 表示父级目录路径(字符串), child 表示子目录(字符串)
public File(File parent,String child) 表示父级目录路径(文件对象),child 表示子目录(字符串)

创建 :
创建文件的方法:createNewFile()
创建一个文件夹
public boolean mkdir() 创建一个文件夹
public boolean mkdirs() 创建一个文件夹, 如果父目录不存在,一同创建父目录

删除:
public boolean delete() 删除一个文件为空的文件夹,非空文件夹删除不了。
注意点: 不会进电脑垃圾回收站

重命名文件:
public boolean renameTo(File dest)
注意点:如果在同一个目录下,是修改其名字,如果不在同一个的目录下是剪切+修改名字

判断类型:
public boolean exists() 判断这个文件是否存在
public boolean isDirectory() 判断是否是文件夹
public boolean isFile() 是否是一个文件

获取:获取路径 public String getAbsolutePath() 获取文件的其绝对路径
public String getPath() 获取构造方法传递的那个参数的路径 new File(“d:\1.txt”)
public String getName() 获取文件的名称
public String getParent() 返回上一级目录
public long length() 文件内容的的长度(字节数)
public String[] list() 返回的是改目录下的第一级的所有文件包括文件夹

递归:理解的是思想。
方法自己调用自己,而且调用规模越来越小。
效率不高,使用时可能会使栈内存溢出。

总结:学习这个异常的抛出,我了解到Exception是Throwable的子类,抛出时也可以抛出Throwable,那为什么不抛出Throwable呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值