异常

异常

异常,是java的又一个显著的特点。顾名思义,就是程序在运行时出现的不正常的现象。java虚拟机把它封装成了一个对象,用类的形式进行描述。

对于异常的情况,可以从严重性来分,对于严重的情况,java通过error类来描述,对于error类,一般不用编写相应的代码进行处理,因为对程序的影响较大,可能会导致程序停掉
而对于不是很严重的情况,java是通过exception类来进行描述的,这个类中可以对这些不严重的情况进行相应的处理。
对于以上的两个类,都是存在于Throwable这个体系中
因为对于error没有具体的处理方式,所以不做过多的讨论,只需要我们在编写代码的时候注意,不要出现这种错误就好了。
而对于exception,java为我们提供了特有的语句进行处理,形式如下:
try
{
需要被检测的代码;
}
catch(异常类 变量)
{
处理异常的代码;处理方式;
}
finally
{
一定会执行的语句;
}
对于try里面的语句,就是我们觉得在程序运行过程中,觉得 可能会出现错误的语句,此外,因为这些可能出错的语句执行后,才会执行到的语句,也要放到try语句里,因为如果出现错误,他们的执行没有任何的意义。
catch里面的语句,就是对出现错误的语句进行相应处理的操作;对于catch后面的括号里的语句 ,前期我们处理异常的时候,可能不是很熟悉,所以会写一个模糊的:exception e ,但是,等我们熟悉之后,里面一定要具体到是哪一类的异常,这样,虚拟机处理起来才会更高效。
最后,对于finally里面的语句,则是一定会执行的语句。
以上是异常处理的基本格式,现在基本的都会处理了,那我们该怎么想jvm申明我们的异常呢?首先提一下的是申明异常的作用:便于提高安全性,让调用处进行处理,不处理编译失败
对于申明异常,我们又要用到一个关键词:throws(抛的意思),就是这里有一个可能粗现异常,你jvm自己看一下,如果真的出问题了,你就按我catch里的方式进行处
理,如果没出现问题,就不要管它。当然抛异常的时候,也跟catch的时候一样,要具体到哪一类异常,这样会让jvm处理的时候更高效
在一个大型的程序中,可能会出现不止一个的异常,那么多个异常该怎么处理呢?
其实,跟一个异常的处理时一样的,只是多几个throws和catch而已,只要你觉得有问题的代码,你就给我抛出来,我先捕获这个东西,如果真的出错了,我就处理了就是了。这里有一点需要注意的就是:如果对个catch块中的异常出现继承关系,父类异常catch块放在最下面。

最后再用传智播客中的例子来帮助我们理解和记忆
class Demo
{
	int div(int a,int b) throws ArithmeticException,ArrayIndexOutOfBoundsException 
	//在功能上通过throws的关键字声明了该功能可能出现问题
	{
		int []arr=new int [a];
		System.out.println(arr[4]);
		return a/b;
	}
}
class ExceptionDemo1
{
	public static void main(String []args) //throws Exception
	{

		Demo d=new Demo();
		try
		{
			int x=d.div(4,0);
			System.out.println("x="+x);
		}
		/*
		catch(Exception e)
		{
			System.out.println("haha:"+e.toString ());
		}
		*/
		catch (ArithmeticException e)
		{
			System.out.println(e.toString ());
			System.out.println("被零除啦");
		}
		catch(ArrayIndexOutOfBoundsException e)
		{
			System.out.println(e.toString ());
			System.out.println("角标越界啦");
		}
		
		
		System.out.println("over");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值