java异常处理机制

异常的关键字 这局话是重点子类不能比父类抛出更多的异常*
try catch finally throws(在方法声明的时候使用) throw(手动抛出异常)
异常类可以创建对象
java中 异常是以类的形式存在的
java异常分Error(不可处理)和Exception(可以处理)
Exception分 1.编译异常 概率大
2.运行异常 概率小
无论是编译异常 还是运行异常都是在运行的时候发生
处理异常的第一种方法 是在声明方法的位置上使用throws关键字 把异常向上抛出 谁调用这个方法 异常就抛给谁
在抛出异常的时候 要么把异常类抛出去 要么把异常的父类抛出去
如果异常发生没有捕捉且上报 那么异常语句后面的语句不会执行
例如throws FileNotException ,调用者可以throws FileNotException或者throws IOException(该异常类是FileNotException)
throws 后面可以写多个异常 用逗号隔开 一般不建议在main方法使用throws 因为如果main发生异常 异常就会抛给jvm 这样程序就会异常终止
处理异常的第二种方式 是使用try…catch语句对异常进行捕捉 这个异常就不会进行上报抛出 使用了try…catch语句捕捉异常后 其后面的语句正常执行
try语句中的某一行出现异常 那么该行后面的代码不会执行 catch可以写多个
try{
调用方法语句
}catch(异常类型 类名){ ///异常类型也可以是写本来那个异常 或者写异常的父类 或者父类的父类 …
语句
} catch(异常类型 类名){
语句
}

也可以只写一个catch 便可以处理所有异常类型捕捉 那就是Exception 但是最好使用一个异常一个catch进行精准捕捉异常
catch写多个时 从上到下要依次捕捉不能乱了顺序 否则会报错
下面这个例子就是一次匹配 如果两个catch中的异常类型换了 就错了
try{
FileInputStream ex=new FileInputStream(“D:\QQ文件 \毛家乐.mp3”);
// System.out.println(“出现了异常无法执行”);
ex.read();
}catch(FileNotFoundException e){
System.out.println(“文件没找到”);
System.out.println(e);
}catch(IOException x){
System.out.println(“读取异常”);
System.out.println(x);
}
<--------------------------------------------------------------->
异常常用的方法
//获取异常的简单描述信息
String ex=exception.getMessage();
//打印异常追踪的堆栈信息
exception.printStackTrace();
finally语句必须是和try…catch语句配合出现使用的
try{
int i=100;
return i;
}catch(){

}finally{
i++;
}
上面的代码如果是在main函数中 finally一定会执行如果在方法中 就不会执行
如果在main函数中执行完try想退出 不想执行finally 那么只能使用System.exit(0)
使用return 0;是不行的
finally语句一定会执行 除非有System.exit(0);语句 这个语句时直接退出jvm
但是在Java方法中所有方法执行是自上而下的 不能改变 所以这个时候return 也能阻止执行finally

即使try语句出现异常 finally也会执行
try和finally,在没有catch语句的情况下也能配合使用
try一个语句不能单独使用

自己定义异常类
编写一个类 继承Exception或者继承 RuntimeException
提供两个构造方法一个无参 一个带有String参数的
例如:
class myexception extends Exception{
public myexception(){

}
public myexception(String s){
        super(s);
}

}

重写之后的方法不能比之前的方法抛出更多的异常(或者是更宽放的异常) , 可以更少
子类不能比父类抛出更多的异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值