Java异常处理学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
异常处理
知识点:
Java的异常机制
Java异常类层次结构
Throwable类
String getMessage()、void printStackTrace()、String toString()
try、catch、finally 、throws、throw
自定义异常类
异常的概念
概念:
在程序运行时打断正常程序流程的任何不正常的情况称为错位或异常。
错误类型:
一般性的错误:
输入数据在保存到数组过程中引起超界、除数为零、输入数据不合法等
致命性的错误:
系统硬件故障、网络通讯中断等引起的无法恢复性错误
处理方式:
向用户通知错误
保存全部工作
让用户适当地退出程序
ng.Throwable类是所有异常类的父类。
Java处理的异常大致分为3类:Error及其子类、RuntimeException及其他Exception类Java对于不同的异常通常采取不同的策略
1.Error 意味着是很难恢复的严重错误,一般不由程序处理。
2.RuntimeException意味着程序设计或实现问题,如:数据使用越界,算术运算异常(如
除0运算),空指针异常即访问没有初始化的空指针等。对于这类异常,处理的策略是纠正错误。
3.其他异常,通常是由环境因素引起的,例如文件不存在,无效URL等。这类异常通常是
由用户的误操作引起的,可以在异常处理中处理,例如提示用户进行正确操作。
常见的异常:
异常说明
RuntimeException ng包中多
数异常的父类
ArithmeticException算术错误,如除以
0 ArrayIndexOutOfBoundsException数组下标出界
ClassCastException非法强制类型转
换
NumberFormatException字符串到数字格
式非法转换
ArrayStoreExcepiton数组元素赋值类
型不兼容
IllegalArgumentException调用方法的参数
非法
NullPointerException试图访问null 对
象引用
异常处理语法
异常处理具体有如下两种方式:
1.捕获并处理异常。
2.将方法中产生的异常抛出。
捕获并处理异常:
1.try catch finally 语句
try catch finally 语句捕获程序中产生的异常,然后针对不同的异常采用不同的处理程序进行处理。
基本格式:
try//try块发现异常并抛出“有异常类产生的对象”
{
//一条或多条要检查的程序语句;
}
catch(异常类1 对象名)// catch块捕捉由try块抛出的异常,并做相应处理
{
//异常发生时的处理语句;
}
catch(异常类2 对象名)
{
//异常发生时的处理语句;
}
finally //finally块必须执行的语句,不管发生异常否
{
//执行最终处清理的语句
}
try catch finally 语句中把可能产生异常的程序放入try{}语句块,然后在之后紧跟一个或多个catch语句块,每个catch块处理一种可能抛出的特定类型的异常。
finally 语句定义了一个程序块,放于try{},catch{}之后,不管程序有无异常都会执行。注:try catch finally 语句中,catch语句块可以有一个或多个,finally语句块可以省略,但是try语句后至少要有一个catch语句或finally语句。
2.针对多种异常的通用处理:
用catch语句进行异常处理时,可以使一个catch块捕获一种特种特定类型的异常,也可以定义多种类型的异常的通用catch块。
Java异常的层次结构:
Catch语句块处理Exception类及其所有子类类型的异常。
try{
}
catch(Exception e){
System.err.println("Exception caught: " + e.getMessage());
}
例.
publicclass Helloworld {
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
int i = 0;
String greetings[]={"hello","hi","goodbye"};
while(i<4){
try{
System.out.println(greetings[i++]);
}
catch(ArrayIndexOutOfBoundsException e){
System.err.println("Caught ArrayIndexOutOfBoundsException:"+e.getMessage());
}
}
}
}
异常类常用方法
查阅JDK帮助学习Throwable类
构建器
Throwable() :构造一个无详细信息的新的Throwable
Throwable(String message) :用指定信息创建新的Throwable
方法均继承自Throwable类
String getMessage() :返回该Throwable对象的简短描述
String toString():返回描述,包括详细信息
void printStackTrace() :打印出异常发生的路径,及引起异常的方法调用的序列
将方法中产生的异常抛出:
抛出异常有两种方式:
将方法中可能产生的异常抛出。
调用该方法的程序将接收到所抛出的异常。
如果被抛出的异常在调用中未被处理,则该异常将被沿着方法的调用关系继续上抛,直到被处理。如果一个异常被返到main()方法,并且在main()方法中未被处理,则该异常将把程序非正常终止。
1.声明异常
指定方法抛出异常: throws
通告异常:throws
语法格式
[修饰符]返回类型方法名(参数序列)throws异常类型1,[异常类型2,……]
{
方法体
}
调用此方法时必须使用try/catch语句来捕获
publicclass TestThrows{
publicvoid aaa(int a,int b) throws ArithmeticException{
int c;
c=a/b;
System.out.println(a+"/"+b+"="+c);
}
publicstaticvoid main(String args[]){
try{
TestThrows test = new TestThrows();