初识异常

异常

继承体系

查看Throwable的描述
在这里插入图片描述可知他有两个子类,分别是Exception和error。
其中Exception异常是要求程序对产生的异常进行处理,不处理的话程序将会结束运行。常见形式为(XxxException)。
Error错误一般指和虚拟机有关的错误,如系统崩溃,动态链接失败等,错误无法恢复或不能捕获,发生在JVM中,如开辟过大的数组空间导致内存溢出。常见形式为(XxxError)。
Exception下还有一个特殊子类,RuntimeException运行时异常
在这里插入图片描述

异常产生过程

例子如下,产生ArrayIndexOfBoundsException异常
在这里插入图片描述

throw 抛出异常

使用格式:
throw new 异常类名(参数)
如ArrayIndexOutOfBoundsException异常
在这里插入图片描述使用上面的方法可以自行定义异常信息,如:

throw new ArrayIndexOutOfBoundsException("索引超出范围");

throws 声明异常

如果方法内通过throw抛出的异常,没有进行捕获处理,那就要通过throws进行声明,让调用者处理。

class Demo {
	public void test() throws Exception {
	if(x > 0) {
	throw new Exception();
	}else {
	system.out.println("test");
	}
}
}

异常捕获 try…catch…fianlly

格式如下

try {
	//需要被检测得语句
} catch {
	//异常处理语句
} finally {
	//一定被执行的语句
}

其中,try块是必须的,catch和finally块都是可选的,但try后必须出现其中一个,或同时出现两个。
finally块:一般用来释放物理资源,除非try块或catch块调用如System.exit(1)退出虚拟机,否则finally块总会被执行。还有最后不要在finally块最后加入return语句,因为当try块或catch块中遇到return或throw使,系统执行这两个语句不会结束该方法,而是去寻找流程是否有finally块,有的话执行,如果其中finally块包含return语句,则程序退出,不会再执行try块或catch块中任何代码。

运行时异常

RuntimeException及其子类如:NullPointerException,ArrayIndexOutOfBoundsException等都属于运行时异常。
特点:

  1. 方法抛出运行时异常,无需定义throws声明,调用者也无需处理。
  2. 运行时期异常发生后,需要程序员进行代码修改。

异常在方法中的重写细节

子类覆盖父类方法时,如果父类方法声明异常,则子类只能声明父类异常或该异常的子类,或不声明。
当父类被覆盖的方法没有异常声明时,子类覆盖方法无法声明异常,即不可用throws声明,只能catch捕获,或是在catch中抛出RuntimeException。
所以通常建议使用Runtime异常。

异常中的常用方法

方法如下
在这里插入图片描述都是用来返回关于异常的信息

自定义异常

当需要自定义异常类时,让类继承Exception或RuntimeException即可

Class 异常名 extends Exception {
	//无参构造器
	public 异常名() {
	}
	//带一个字符串参数的构造器
	public 异常名(String s) {
		super(s);
	}
}

如果继承的是Exception的话,必须用throws声明,而后进行捕获。例

class Exp extends Exception {
	Exp() {
		super();
	}
	Exp(String s) {
		super(s)
	}
}
class Test{
	private int a;
	Test(int a) throws Exp {
		if(a > 0) {
			throw new Exp(a + "大于0");
		}
		this.a = a;
	}
}
class Exp {
	public void static mian(String[] args) {
		try {
			Test t = new Test(8);
		}catch(Exp ex) {
			Sysotem.out.println(ex.getMassege());
		}
	}
}

总结

异常基本操作

  1. 创建异常对象
  2. 抛出异常
  3. 处理异常(不一定会产生异常),如果产生就进行处理

常见异常

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组下标越界异常:ArrayIndexOutOfBoundsException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值