目录(一)什么是异常和异常处理(二)异常的分类(三)异常处理机制(3.1)try-catah语句(3.2)调试代码(四)自定义异常类(4.1)自定义异常类概述(4.2)调试代码
(一)什么是异常和异常处理
异常:程序不正常的行为和状态。比如试图打开一个根本不存在的文件等。
异常处理:程序返回到安全状态。异常处理会改变程序的控制流程,让程序有机会对错误做出处理。
(二)异常的分类
i.检查性异常:外界相关的错误。eg:打开一个不存在的类、加载一个不存在的类等。
ii.运行时异常:程序有关的异常。eg:50空指针、数组越界等。
iii.ERROR:系统内部错误或资源耗尽。错误不是异常,而是脱离程序员控制的问题。
(三)异常处理机制
(3.1)try-catah语句
JAVA使用try-catch语句来处理异常,将有可能出现的异常操作放在try-catch的try部分,一旦try部分抛出异常对象,或调用某个可能抛出异常对象的方法,并且该方法抛出了异常对象,那么try立即结束执行,转向catch部分。所以程序将发生异常后的处理放在catah部分。
try-catah语句大的格式如下:
try{
包含可能发生异常的语句正常业务逻辑代码
}
catch(ExcetionSubClass1e){
...当try发生异常,将执行catch代码,若无异常,不执行
}
catch(ExcetionSubClass2e){
...
}
(3.2)调试代码
ubcclasstext1
{
ubcstaticvoidmain(String[]args)
{
intn=0,m=0,t=1000;
try
{
m=Integer.arseInt("8888");
n=Integer.arseInt("ab89");发声异常,转向catch
t=7777;t没有机会执行
}
catch(NumberFormatExcetione)
{
System.out.rintln("发生异常:"+e.getMessage());
}
}
}
运行结果如下:(四)自定义异常类
(4.1)自定义异常类概述
在编写程序时可以继承Excetion类或者其子类定义自己的异常类,然后根据程序的需要来规定哪些方法产生这样的异常。一个方法在声明时可以使用throws关键字声明要产生的若干个异常,并在该方法中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出该异常对象,导致该方法结束执行。程序必须在try-catch块语句中调用可能发生异常的方法,其中catch的作用就是捕获throw关键字的异常对象。
注:throw不是JAVA的关键字,该关键字的作用就是抛出异常。throw和throws是两个不同的关键字。
(4.2)调试代码
ubcclasstext1extendsExcetion{
rivateintdetail;
ubctext1(inta){
this.detail=a;
}
ubcStringtoString(){
turn"MyExcetion{"+"detail="+detail+'}';
}
}
imortjava.rmi.MarshalExcetion;
ubcclasstext2{
staticvoidtest(inta)throwsExcetion{
System.out.rintln("传递的参数为:"+a);
if(a>10){
thrownewExcetion();
}
System.out.rintln("成功");
}
ubcstaticvoidmain(String[]args)throwsExcetion{
try{
test(11);
}catch(MarshalExcetione){
System.out.rintln("MyExcetion==>"+e);
}
}
}注意一个方法被覆盖,覆盖它的方法必须抛出相同的异常,或者异常的子类。如果父类的方法抛出多个异常,那么重写的子类方法必须抛出哪些异常的子集,也就是不能抛出新异常。
上一篇 Java创建多线程返回结果方式
下一篇 Java实现后台图片文件上传