Java基础篇--异常

一、异常概述:

就是程序出现了不正常的情况。

二、异常体系:

1.Error:严重问题,不需要处理

2.Exception:称为异常类,它表示程序本身可以处理的问题

3.RuntimeExceptioin:在编译期是不检查的,出现问题后,需要我们回来该代码

4.非RuntimeExceptioin:编译期就必须处理的,否则程序不能通过编译,就更不能正常运行了

三、JVM的默认处理方案 :

1.如果程序出问题了,我们如果没有做任何处理,最终JVM会做默认处理:

①把异常的名称,异常原因及异常出现的位置等信息输出在控制台

②程序停止执行

try...catch... 


 一、格式:

try{

      可能出现的异常代码;
 }catch(异常类名 变量名){

      异常的处理代码;
}

try {
int[] a = {12,20,23};
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("你的索引不存在");
}

二、执行流程:

1.程序从try里面的代码开始执行

2.出现异常,会自动生成一个异常类对象,该异常对象将被提交给java运行系统

3.当java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理

4.执行完毕之后,程序还可以继续往下执行

三、Throwable的成员方法 :

public String getMessage():返回此throwable的详细消息字符串

​try {
int[] a = {12,20,23};
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("你的索引不存在");
System.out.println(e.getMessage());
}

 ②public String toString():返回此可拋出的简短描述

​
​try {
int[] a = {12,20,23};
}catch(ArrayIndexOutOfBoundsException e){
System.out.println(e.toString());
}

​

public void printStackTrace():把异常的错误信息输出在控制台

​
​try {
int[] a = {12,20,23};
}catch(ArrayIndexOutOfBoundsException e){
e.printStackTrace();
}

四、编译时异常和运行时异常的区别:

1.java中的异常被分为两种大类:

编译时异常和运行时异常,也被称为受检异常和非受检异常。所有的RuntimeException类及其子类被称为运行时异常,其他的异常都是编译时异常

2.编译时异常:

必须显示处理,否则程序就会发生错误,无法通过编译

3.运行时异常:

无需显示处理,也可以和编译时异常一样处理

throws


一、概念:

虽然我们通过try...catch...可以对异常进行处理,但是并不是所有的情况我们都有权限进行异常的处理。也就是说,有些时候可能出现的异常是我们处理的了的,这个时候该怎么办呢?

针对这种情况,java提供了throws的处理方案

二、格式: 

throws 异常类名;

注意:这个格式是跟在方法的括号后面的

public class sum2_2 {
	public void shenm(int a) throws sum2_1{
		if(a < 0 || a > 100) {
			throw new sum2_1();
		}else {
			System.out.println("分数正常");
		}
	}
}

 三、两种异常try...catch...throws的区别:

1.如果采用throws这种方案,将来谁调用谁处理

2.try...catch...运行时异常可以不处理,出先问题后,需要我们回来修改代码

自定义异常 


一、格式:

public class 异常类名 extends Exception{

        无参构造方法

        带参构造方法

}

public class sum2_1 extends Exception{
	public sum2_1() {
		
	}
	public sum2_1(String num) {
		super(num);
	}
}

  二、throwsthrow的区别:

throwsthrow
用在方法声明后面,跟的是异常名用在方法体内,跟的是异常对象名
表示抛出异常,由该方法的调用者来处理表示抛出异常,由方法体内的语句处理
表示出现的一种可能性,并不一定会发生这些异常执行throw一定抛出了某个异常

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值