异常处理机制

异常处理机制知识点总结:

1.try包围可能出错范围,catch 捕获代码抛出的错误,并解决

2.JVM在执行代码过程中发现一个异常会实例化这种情况的异常实例,并将代码整个执行过程完整设置到异常中来表示该错误报告,设置完毕后将异常抛出,若代码有try包围,则jvm会检查catch中是否关注,关注交给catch解决,否则会将异常抛出方法之外

由调用当前方法的代码解决该异常

3.为了防止程序中断最后加上Exception,但子类在上,父类在下。

4.finally块定义在异常捕获机制的最后,可以跟在try块后,或最后一个catch块之后
finally块中的代码一定执行,无论try块中的代码是否会抛出异常
一般把释放资源等操作放在finally中,例如关闭流案例

5.当一个方法使用throw抛出一个异常,就要在方法上使用throws,声明该异常的抛出以通知调用者解决,只有RuntimeException及其子类异常使用throw抛出时不强制要求。
其他异常都是强制要求的,必须使用throws声明,否则编译不通过, RuntimeException是常识错误,像空指针异常,太常见了,如果每次都是Exception,那么就要try-catch,太麻烦。

6.重写父类一个含有throws异常抛出声明的方法时,子类该方法的throws的重写原则
 1.不处理异常
 2.throws部分异常
 3.子类异常
 4.不可以抛出额外异常
 5.不可以父类异常
7.
-可检查异常
 -非检查异常

8. 当调用一个含有throws声明异常抛出的方法时,编译器要求必须处理该异常。处理手段两种,同时不要在main方法上使用throws,不负责任
1.try-catch捕获并处理
2.当前方法继续使用throws声明该异常的抛出

***************************************************************************************************
public class A {
public static void main(String[] args) {
System.out.println("程序开始了");
try{
String str="";
System.out.println(str.length());
System.out.println(str.charAt(0));
}catch(NullPointerException e){ 
System.out.println("出现了空指针");
}catch(StringIndexOutOfBoundsException e){
System.out.println("下标越界了");
}catch(Exception e){
System.out.println("反正就是出了个错");
}
System.out.println("程序结束了");
}
}

public class B2 {
public static void main(String[] args) {
BufferedReader br=null;
try {
br=new BufferedReader(
new InputStreamReader(
new FileInputStream("src/day1/A.java")
)
);
String line=null;
while((line=br.readLine())!=null){
System.out.println(line);
}
} catch (Exception e) {
System.out.println("出错了");
}finally{
if(br!=null){
try{
br.close();
}catch(Exception e){
}
}
}
}
}

package day01;
//年龄不合法异常是自定义异常,通常用于描述某个业务逻辑上出现的问题。

//名字应做到见名知意
public class illegalAgeException extends Exception{
private static final long serialVersionUID = 1L;
public illegalAgeException() {
super();
}
public illegalAgeException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);

}
public illegalAgeException(String message, Throwable cause) {
super(message, cause);
}
public illegalAgeException(String message) {
super(message);
}
public illegalAgeException(Throwable cause) {
super(cause);
}
}

public class Person {
private int age;
public int getAge() {return age;}
public void setAge(int age) throws illegalAgeException{
if(age<0||age>100){
throw new illegalAgeException("年龄不合法");
}
this.age = age;
}

}
public class C {
public static void main(String[] args) {
Person p=new Person();
try {
p.setAge(200);
} catch (illegalAgeException e) {
e.printStackTrace();
}
System.out.println("年龄为"+p.getAge());
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值