




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
异常处理
•5.1Java异常处理的基础知识
5.L1错误与异常
5.L1异常处理机制
1.抛出异常2.捕获异常3.异常处理的类层次
•5.2异常类的产生、捕获与处理
•5.3异常的分类
•5.4抛出异常
•5.5自定义异常类
5.2异常类的产生、捕获与处理
1.异常的产生
2.使用try-catch-finally语句捕获与处理异常
3.Exception异常类的方法
publicclassTryl
(
publicstaticvoidmain(Stringargs[])
(
inti=0;
inta[]={5,6,7,8);
fbr(i=O;i<5;i++)
System.out.println(na["+i+n]=n+a[i]);
System.out.print(n3/0=n+(3/0));
ArraylndexOutOfBoundsException
D:\myjava>javacTryl.java
D:\myjava>javaTryl
a[0]=5
a[l]=6
a[2]=7
a[3]=8
Exceptioninthread"main"java.lang.ArraylndexOutOfBoundsException
atTryl.main(Tryl.java:8)
D:\myjava>javacTryl.java
D:\myjava>javaTryl
Exceptioninthread"main"java.lang.ArithmeticException:/byzero
atTryl.main(tryl.java:9)
使用try-catch-finally语句捕获与
处理异常
〈语句1>
)
catch(ExceptionTypee)
(
〈语句2>
}
finally
〈语句3>
publicclassTry2
{publicstaticvoidmain(Stringargs[])
{inti=0;
inta[]={5,6,7,8};
fdr(i=0;i<5;i++)
{try
{System.out.print(,,a[,'+i+,,]/n+i+,-,'+(a[i]/i));
)
catch(ArrayIndexOutOfBoundsExceptione)
{System.out.print("捕获数组下标窥界异常!”);
}
catch(ArithmeticExceptione)
{System.out.print("捕获算术异常!");
)
catch(Exceptione)
{System.out.print("捕获"+e.getMessage()+"异常!");
}〃显示异常信息
finally
{System.out.println(nfinallyi="+i);捕获算术异常!finallyi=0
}a[l]/l=6finallyi=l
}a[2]/2=3finallyi=2
System.out.println("继续!)a[3]/3=2finallyi=3
}幕会数组下标越界异常!finallyi=4
}继续!
publicclassTry2
{publicstaticvoidmain(Stringargs[])
{inti=0;
inta[]={5,6,7,8);
fdr(i=0;i<5;i++)
{try
{System.out.print(,,a[,,+i+,,]/n+i+,-n+(a[i]/i));
)
/*catch(ArrayIndexOutOfBoundsExceptione)
{System.out.print("捕获数组下标越界异常!”);
catch(ArithmeticExceptione)
{System.out.print("扁获算汆异常!)
}*/
catch(Exceptione)
{System.out.print("捕获"+e.getMessage()+"异常!");
〃显示异常信息
D:\myjava>javaTry2
finally
捕获/byzero异常!finallyi=0
{System.out.println(nfinallyi="+i);
}“a[l]/l=6finallyi=l
a[2]/2=3finallyi=2
a[3]/3=2finallyi=3
System,out.println("继续!”);病素null异常!finallyi=4
}
继续!
5.3异常的分类
•1.异常类层次图
程序对错误与异常的三种处理方式:
①程序不能处理的错误
②程序应避免而不捕获的异常
③程序必须捕获的异常
例5.3文件没有找到异常类
•2.常见的公用异常类
importjava.io.*:
publicclassTry3
(
publicstaticvoidmain(Stringargs[])
(
FilelnputStreamfis=newFileInputStream(nautoexec.batn);
System.out.println(nIcannotfoundthisfile!n);
D:\myjava>javacTry3.java
Try3.java:6:unreportedexceptionjava.io.FileNotFoundException;mustbecaught
ordeclaredtobethrown
FilelnputStreamfis=newFileInputStream("autoexec.bat");
A
1error
D:\myjava>
5.4抛出异常
publicclassTry4
(
publicvoidrun(bytek)〃求k的阶乘1!=1
(2!=2
bytey=l,i;
for(i=1;i<=k;i++)3!=6
y=(byte)(y*i);
System.out.println(k+n!=n+y);4!=24
}5!=120
publicstaticvoidmain(Stringargs[])
(6!=-48
Try4a=newTry4();7!=-80
for(bytei=l;i<10;i++)
a.run(i);8!=-128
9!=-128
1.使用throw语句抛出异常
publicclassTry5
(
publicvoidrun(bytek)
(
bytey=l,i=l;
System.out.print(k+n!=M);
fbr(i=l;iv=k;i++)
(
try
(
if(y>Byte.MAX_VALUE/i)//Integer类的常量
thrownewException(ttoverflow^^);〃溢出时抛出异常,12行
else
y=(byte)(y*i);
catch(Exceptione)
System.out.println(nexception:n+e.getMessage());
e.printStackTrace();〃显示异常信息
System.exit(O);
System.out.println(y);
)
publicstaticvoidmain(Stringargs[])i=1
21=2
3!=6
Try5a=newTry5();4!=24
for(bytei=l;i<10;i++)5!=120
a.run(i);〃29行6!=exception:overflow
java.lang.Exception:overflow
atTry5.run(Try5java:12)
atTry5.main(Try5.java:29)
2,抛出异常的方法与调用方法处理异常
publicclassTry6
(
publicvoidcalc(bytek)throwsException〃抛出异常
(
bytey=l,i=l;
System.out.print(k+M!=n);
fbr(i=l;i〈=k;i++)
if(y>Byte.MAX_VALUE/i)
thrownewException("overflow");〃10行
else
y二(byte)(y*i);
System.out.println(y);
publicvoidrun(bytek)〃捕获并处理异常
{try一
{calc(k);〃20行
}
catch(Exceptione)
(
System.out.println(uexception:n+e.getMessage());
e.printStackTrace();
System.exit(O);
}
}
publicstaticvoidmain(Stringargs[])
(
Try6a=newTry6();
fbr(bytei=l;i<10;i++)
a.run(i);〃33行
Try6的运行结果
D:\myjava>javaTry6
1!=1
2!=2
31=6
4!=24
5!=120
6!=exception:overflow
java.lang.Exception:overflow
atTry6.cale(Try6.java:10)
atTry6.run(Try6.java:20)
atTry6.main(Try6.java:33)
3.由方法抛出异常交系统处理
importjava.io.*;
publicclassTry3
(
publicstaticvoidmain(Stringargs[])throwlOException
FilelnputStreamfis=newFileInputStream("autoexec上at");
5.5自定义异常类
classOverflowExceptionextendsException〃自定义异常类
(
publicvoidprintMsg()
(
System.out.println(nexception:n+this.getMessage());
this.printStackTrace();
System.exit(O);
publicclassTry7
publ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度河北省护师类之护士资格证综合检测试卷A卷含答案
- 2025江苏兴化市招聘教师67人笔试备考题库及一套完整答案详解
- 2025江苏宿迁市泗阳县招聘乡村医生27人笔试备考试题及完整答案详解一套
- 2025河北沧州经济开发区招聘社区工作者10人招聘笔试备考题库及一套答案详解
- 2025河北邯郸市肥乡区选聘农村党务(村务)工作者100人笔试备考试题完整答案详解
- 2025年东营市公务员考试行测真题及答案详解(有一套)
- 山东省济宁市兖州区2024-2025学年高一下学期期中考试物理试题
- 江苏省宿迁市泗阳县2024-2025学年高一下学期期中考试物理试卷
- 专业彩妆技巧 全面解读让你化妆更得心应手
- 如何使用护发霜修复受损发丝
- 巨力索具(河南)有限公司年生产10万吨钢丝及5万吨钢丝绳项目环境影响报告
- 三段式电流保护的整定与接线课件
- GB/T 5463.3-1986非金属矿产品名词术语石膏、硬石膏
- GB/T 18920-2002城市污水再生利用城市杂用水水质
- 国开专科《人文英语 1》机考题库
- GB 10055-2007施工升降机安全规程
- 经济周期理论精编版课件
- OECD税收协定范本中英对照文本
- 2022年货运员(外勤)理论知识考试题(含答案)
- 电焊工安全技术交底15篇
- 乙状结肠癌根治术的护理查房课件
评论
0/150
提交评论