栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA异常处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA异常处理

JAVA异常处理 前言

在编写程序的过程中,即使经验再丰富的程序员也不可避免的会出现错误,出现错误一般有三种情况:语法错误、逻辑错误、运行错误。语法错误是由于没有遵循Java的语言规则引起的,通过前面的学习,我们知道这种错误一般可以有编译器提醒解决,而逻辑错误也就是常见的BUG出现的状况,这只有在运行时一步步调试运行来解决。而运行错误,则是在程序运行时出现严重不可解决韦恩导致程序终止运行的错误,如:除数为0,数组下标越界、需要存取的文件不存在或网络突然中断等。通常这种情况称为异常。对于异常的处理则为一场处理

学习目标

1.理解异常处理的概念
2.熟悉异常类型
3.掌握如何在方法中声明异常
4.掌握如何在方法中抛出异常
5.使用try…catch代码处理异常
6.创建自己的异常类
7.在try catch 代码块中使用finally子句

1.异常与异常类型

按照异常在编译时是否被检测来分可以分为两大类
1.受检异常(编译时被检测到的错误)
2.非受检异常(Runtime Exception和Error)

2.异常处理

为避免出现异常导致中止执行,Java提供了相应得机制进行处理,当一个程序抛出异常后,将会回溯到第一个由catch的地方进行处理;

异常处理程序的基本形式
method()throws Exceptionl,Exception2,...
{
  ...
  try
  {
     ...程序块
  }
  catch(Exception1 e1)
  {
    //对Exceptionl e1处理
  }
}
2.1 声明异常

声明异常时当方法执行时,声明方法可能出现的异常。因为任何代码都有可能出现系统错误和运行异常,所以Java 不需要在任何方法中显式声明Error和RuntimeException。但是,如果方法出现其他异常,则必须在方法声明中显示声明它们。

异常声明 method()throws Exception
public class TestThrows
{
   static void array(int size)throw NegativeArraySizeException,
   ArratIndexOutOfBoundsException
   {
       int [] a=new int[size];
       System.out.println(a[10]);
   }
   static void test()
   {
     array(-1);
   }
   public static void main(String[] args)
   {
     try{
        test();
     }catch (ArrayIndexOutBoundsException e)
     {
       System.out.println("数组越界");
     }
   }
}
2.2 抛出异常

在声明方法中如果出现异常,可以通过关键字throw 来抛出异常对象,抛出异常的语法如下

throw new ConstructorException();

ConstryctorException()是指异常类的构造方法。通过new ConstructException()来构造一个异常类的对象,再通过throw来抛出这个对象。要注意的是:一个方法只能抛出方法声明中的异常,或者Error、RuntimeException 和两者的子类

public class TestThrow
{
   void method(){//抛出ArithmeticException 异常,合法
      throw new ArithmeticException();//ArithmeticException为RuntimeException子类
   }
   void method2(){//抛出一个IOException 异常,不合法
     throw new IOExcepetion();
   }
}
2.3捕获异常

通过上面介绍,我们知道了如何声明异常、如何抛出异常。下面我们将介绍如何捕获异常。在Java语言中,用try…catch语句来捕获异常。格式如下:

try{
//可能会出现异常情况的代码;
}catch(Exceptionl e){
}
catch(Exceptionl2 e)
{
 //处理Exception2异常
}

如果在try子句执行期间没有出现异常,则跳过catch子句,如果try代码块中的语句抛出异常,Java则跳过剩下的语句,并开始搜索异常处理程序,一旦异常与catch子句中列出的其中一个异常匹配,则执行catch子句的代码;如果异常类型与catch子句中任何异常都不匹配,Java将退出该方法,并把异常传递到调用该方法的方法,并继续执行相同的过程来查找处理程序,如果在正被调用的方法链中没有找到处理程序,程序将会中止。

3.重新抛出异常

当方法中出现异常时,如果没有捕捉到异常,方法就立即退出,如果在退出钱需要方法执行某个任务,那么就可以捕捉方法中的异常,任何重新把它抛出给结构中实际处理程序

try{
可能出现异常情况的代码
}catch(Exception e){
  //处理出现的Exception异常
  throw e//重新抛出异常
}

在重新抛出异常中,要需要注意以下几点
(1)程序执行到throw 时立刻终止,不在执行它后面的语句
(2)在包含throw语句的try块后面寻找其匹配的catch子句来捕获异常
(3)如果找不到则向上一层程序JVM来处理。

4.finally

finally子句中的语句不管是否异常是否被抛出都要执行,也就是就算throw一个异常catch接受处理以后也要执行finally中的语句。

5.自定义异常

Java提供许多异常类,但是Java所提供的异常类无法合适的描述我们所遇到的问题时,我们就可以自定义异常。
以下时需要注意的几个点

(1) 自定义异常需要继承Exception以及其子类
(2)若要抛出自定义的异常对象,则使用throw 关键字
(3)若要抛出自定义异常,需要将所调用的方法定义为可抛出异常的方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/344756.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号