黑马程序员__异常

---------------------- Android开发java培训、期待与您交流! ----------------------

异常概述:

计算机系统对异常的处理通常有两种方法:1)计算机系统本身直接检验程序中的错误,遇到错误时给出错误信息,并终止程序的运行;2)由程序员在程序中加入异常处理功能。

Java语言的异常处理机制的最大优势之一:可以将异常情况在方法调用中进行传递,通过传递可以将异常情况传递到合适的位置再进行处理。

异常分类:java.lang.Throwable的两个子类

Error类:该类代表错误,指程序无法恢复的异常,对于所有错误类型及其子类,都不要求程序进行处理。常见的Error类型:如内存溢出 StacOverflowError等

Exception该类代表异常,指程序有可能恢复的异常,该类是整个Java语言异常类体系中的父类,使用该类就可以代表所有的异常清理。

在这些异常类中,根据是否程序自身导致的异常,将所有的异常类分为两种:

RuntimeException及其子类

该类属于程序运行时异常,即程序自身的问题所导致的异常。如数组下标越界异常

ArrayIndexOutofBoundsException等,该类异常在语法上不强制程序员必须处理,即使不处理这样的异常也不会出现错误。

其他Exception子类

该类异常属于程序外部问题引起的异常,即程序运行时某些外部问题导致产生异常,例如文件不存在异常 FileNotFoundException,该类异常在语法上要求强制出来,如不处理则会出现语法错误。

Java.lang.NullPointerException:空指针异常,调用null对象中的非static成员变量或成员方法时产生的异常

Java.lang.ArithmeticException:数学运算异常,例如除0运算时产生该异常

Java.lang.ArrayIndexOutofBoundsException:数组下标越界异常,数组下标值小于0或大于等于数组长度时产生异常

Java.lang.IllegalArgumentException:非法参数异常,当参数不合法时产生的异常

Java.lang.IllegalAccessException:没有访问权限异常,当应用程序要调用一个类,但当前的方法没有对该类的访问权限时抛出的异常

异常的处理

java的异常处理方式有两种:

  • try…..cathc…finally结构对异常进行捕获和处理

try {

//可能抛出的异常代码

}

catch(ExceptionType1 e2){

//抛出异常ExceptionType1时的异常处理代码

}

catch(ExceptionType2 e2){

//抛出ExceptionType2时的异常代码

}

finally {

//无论是否抛出异常,都会执行的代码

}

try语句块中是可能抛出的代码,如果该块内的代码没有出现异常,后面的各个catch块都不起任何作用。但如果该块中的一条语句抛出了异常,则其后续语句不在执行,而是转到catch进行异常类型匹配

catch语句块负责捕获指定类型的异常并进行处理。一个try块可以对应多个catch块,用于对多个异常类进行捕获,如果要捕获的各个异常类之间没有继承关系,各个catch块的顺序无关紧要,但如果它们之间有继承关系,则应将子类的catch块放在父类的catch块之前。因此Exception这个异常类的根类一定要放在最后一个catch里面。在catch块中可以用getMessage()方法返回一个对发生的异常进行描述的字符串,用printStackTrace()方法打印方法的调用序列。catch语句捕捉的范围要由小到达

finally语句块是可选的,无论是否发生异常,finally语句块总会执行,一般用于释放资源,关闭文件等。

  • throw 或throws抛出异常

一般情况下,异常是由系统自动捕获的,但如果程序员不想再当前方法内处理异常,可以用throw语句将异常抛出到调用方法中。调用方法也可以将异常再抛给其他调用方法,如果所有的方法都选择了抛出此异常,最后JVM将捕获它,输出相关错误信息,终止程序运行。格式: throw new ExceptonTye(异常信息)

如果一个方法没有捕获可能抛出的异常,调用该方法的其他方法应该捕获并处理异常。为了明确指出一个方法不捕获异常,而让调用该方法的其他方法捕获该异常,可以在声明方法的时候,使用throws抛出该类异常,如果抛出的是多个不同异常,中间用逗号隔开。格式:public static void main(String[] args)thows 异常类型名 { }

---------------------- Android开发java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值