• Java中实现异常处理的基础知识


    Java中实现异常处理的基础知识

        异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况。许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象。

    例如:数组越界和被0除。

     

    源代码示例:

    package yanzheng;

    //关于异常  2015.11.11

    import javax.swing.*;

    public class AboutException {

       public static void main(String[] args

       {

          int i=1, j=0, k;

       //   k=i/j;    //此句会抛出异常,显示被0除

    try

    {

    k = i/j;    // Causes division-by-zero exception

    //throw new Exception("Hello.Exception!");

    }

    catch ( ArithmeticException e)  //捕获类型为算术异常,捕获对象为e,算数异常就比如被0除这种情况

    {

    System.out.println("被0除.  "e.getMessage());  

    //e.getMessage()这句是包中的一个类,去掉也行

    }

    /*Exception为所有的异常类型.使用catch语句,只能捕获Exception类及其子类的对象。

     因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。*/

    catch (Exception e)  

    {

    if (e instanceof ArithmeticException)  

    //instanceof为如果e可转换为ArithmeticException这种类型

    System.out.println("被0除");

    else

    {  

    System.out.println(e.getMessage());

    }

    }

    finally  //finally语句会被执行

         {

          JOptionPane.showConfirmDialog(null,"OK");

         }

      }

    }

     

     

    异常处理的目的是依据实际情况提供不同的错误应对策略与手段,使程序更稳定,更安全。

    异常处理的主要用途是提供准确的错误消息,解释失败的原因、位置和错误类型等,同时提供一定的恢复能力,尽可能地保证数据完整性不被破坏,并让程序能继续运行。

    Java中的异常捕获语句

        Java 中所有可捕获的异常都派生自 Exception 类。

    使用Java异常处理机制

    *把可能会发生错误的代码放进try语句块中。

    *当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。catch语句块中的代码用于处理错误。

    *当异常发生时,程序控制流程由try语句块跳转到catch语句块。

    *不管是否有异常发生,finally语句块中的语句始终保证被执行。

    *如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。

    JDK中与异常相关的类

    Java中的异常分类

    Throwable类有两个直接子类:

    Exception:出现的问题是可以被捕获的;

    Error:系统错误,通常由JVM处理。

    可捕获的异常又可以分为两类:

    (1)check异常:直接派生自Exception的异常类,必须被捕获或再次声明抛出

    (2)runtime异常:派生自RuntimeException的异常类。使用throw语句可以随时抛出这种异常对象:

    throw new ArithmeticException(…);

    异常的“多态”特性

    *可以有多个catch语句块,每个代码块捕获一种异常。在某个try块后有两个不同的catch块捕获两个相同类型的异常是语法错误。

    *使用catch语句,只能捕获Exception类及其子类的对象。因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。

    *将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。

    “finally”的功用

    *资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况

    *finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。

    *注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。

  • 相关阅读:
    理解Mysql prepare预处理语句
    php观察折模式
    RSA加密解密
    64位CentOS 6.4下安装wine(32位)
    wireshark安装
    linux安装Vmware的时候出现“Could not open /dev/vmmon”
    php中的魔术方法
    lnmp安装--php安装
    XZ压缩最新压缩率之王
    package.json文件
  • 原文地址:https://www.cnblogs.com/diyunfei/p/4957324.html
Copyright © 2020-2023  润新知