java异常

一、什么是异常呢?

 

    异常是java程序在运行期产生的错误。

 

二、异常会在哪些情况下产生?

 

    总的来说:在现实世界中充满了不良的数据和有问题的代码,这些都属于异常情况。

 

    通常在什么情况下产生呢?

    1、可能造成程序崩溃的错误输入

    2、设备错误

    3、物理限制

    4、代码错误

 

三、发生异常了,我们该如何来处理呢?也就是说,在java里面是如何来处理异常的呢?

 

    Java使用了一种称为异常处理的错误捕获机制进行处理。

 

四、什么是异常处理呢?

    异常处理就是用于处理程序错误的一种机制。比如说,访问数组时,给定下标超过数组下标的范围,这就是一种错误,就需要对程序代码进行修改,或者是对这种异常进行捕获。

 

五、异常对象是如何获取到值的呢?

    什么意思呢?就是我们经常做异常处理的时候,经常是catch(Exception e){statement}那么,这里面的e这个对象是怎么获取到值的呢?

 

    在java程序运行的时候,如果遇到了异常,java虚拟机即JVM会查看所有的catch语句块,找到与当前异常相匹配的异常处理类,或者是异常处理类的父类,如果JVM找到了之后,它就会自动去实例化这个异常类对象,在这个地方指的是我给出的e,当这个对象被实例化之后,我就当然可以用这个对象去调用这个异常处理类的方法,对当前遇到的异常进行处理了。

上面说的这一堆话就是再说异常是怎么捕获的。

 

五、异常可以分为哪几类?

 

简单分:

    1、未检查异常

    2、必查异常

 

   什么是未检查异常呢?

 

    就是说这种异常没必要让程序员去处理,有些时候,这种异常程序员也没法处理,比如说计算机突然断电,而我的程序还在运行,这种突如其来的动作,程序员是很难在程序中用代码去处理这种情况的,因为我并不知道计算机它什么时候断电啊。所以说,这种异常还是交给JVM去搞定,没必要由我们这些程序员去搞定。我想这就是未检查的意思吧,也就是说,没必要由我们程序员去处理的异常情况。

 

    什么是必查异常呢?

 

    必查异常,从字面上看就是必须检查的异常,把“检查”换成“处理”,也就是必须处理的异常,由谁来处理呢,当然是人啊,不可能是所有人,当然就是程序员了。也就是说必须由程序员处理的异常就是必查异常。

 

例如:

public static void main(String [] args){

try{

String [] s = new String[]{"abc","def","ghi"};

System.out.print(s[4]);

}catch(ArrayIndexOutOfBoundsException ex){

ex.printStackTrace();

System.out.println("数组下标越界了!");

}

}

 

    程序代码运行的过程中,会出现下标越界异常,程序员是有能力对它进行处理的,也就是说必查异常就是程序员能够处理的程序错误。

 

五、为什么要使用自定义异常?

 

    因为在程序中,可能会遇到任何标准异常类都没有能够充分描述清楚的问题,这个时候,我们就需要自己定义异常来描述问题。

 

六、如何自定义我们的异常呢?

 

    只需要让我们自己定义的异常类继承Exception或它的子类即可。

 

七、异常捕获是怎么回事儿?

 

    如果异常发生时没有在任何地方进行捕获,那么程序就会终止,并在控制台上打印出异常信息,包括异常类型与堆栈类容。

 

    如何来捕获异常呢?

    必须设置try/catch语句块。

    如果在try语句块中的任何代码抛出了一个在catch子句中声明那个异常,那么:

    1、程序会跳过try语句块其余的代码。

    2、程序将执行catch子句中异常处理类里面的代码

    3、如果try里面的代码没有抛出任何异常,那么程序将会跳过catch子句

    4、如果方法中的任何代码抛出了一个在catch子句中没有声明的异常类型,那么就会立刻退出这个方法。

 

八、对抛出异常的方法在重写时应该注意哪些问题?

    当重写一个抛出异常的方法时,子类抛出的异常类型必须与父类的异常类型一样,或者该异常类型的子类。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值