您的位置:首页 > 编程语言 > Java开发

Java异常处理总结

2019-09-20 14:43 232 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/b915660910/article/details/101059976

Java异常处理总结

一、基本概念

异常处理的作用:异常处理是对可能出现的异常进行处理,让程序在发生错误的地方停下来并处理错误。不将错就错,以防止程序遇到异常时被卡死,处于一直等待,或死循环。它可以提高程序的健壮性和容错性。

异常处理的任务:将控制权从错误产生的地方转移给能够处理这种情况的错误处理器。

异常有两个过程:一个是抛出异常;一个是捕捉异常。异常最终一定是要捕捉并处理的,抛出异常是不就地处理异常,而是将异常抛出给上层调用它的方法程序处理。

异常的类型

  1. 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
  2. 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
  3. 错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。需要注意的是:Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。

    如上图所示所有的异常类是从 java.lang.Exception 类继承的子类。
    Exception 类是 Throwable 类的子类。除了Exception类外,Throwable还有一个子类Error 。异常类有两个主要的子类: IOException 类和 RuntimeException 类。

二、捕获(try{…}catch{…})和抛出(throw/throws)

1、捕获
使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。语法如下:

try{
// 程序代码
}
catch(异常类型1 异常的变量名)
{
// 程序代码
}
catch(异常类型2 异常的变量名2)
{
// 程序代码
}
……
finally{
// 程序代码
}

try{…}中放置可能会发生异常的的语句块,catch(){…}用于抓住异常并定义异常出现时的处理方法,finally{…}表示不管异常是否发生,都得进行finally{…}中的处理。catch(){…}块可以有一个或者多个,finally{…}块可以没有。且某个函数或某段程序块不管会不会、有没可能抛出异常,都可以加try{…}catch{…}去捕捉它。

2、抛出
抛出异常有三种形式:throw、throws、系统自动抛异常。

1)throw与throws的比较

  • throws出现在方法函数头,放在方法签名的尾部;而throw出现在函数体。
  • 一个方法可以通过throws声明抛出多个异常,多个异常之间用逗号隔开。
  • throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
  • 两者都只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

2)自定义异常

用户可以自定义异常,新建一个异常类,让其继承Exception类或Exception的某个子类。然后用throw抛出自己定义的异常类对象。

/***********************************************************************************************************************************************
侵删
/***********************************************************************************************************************************************

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: