• java异常机制


    java中的异常(Exception)机制很重要,程序难免会出错,异常机制可以捕获程序中的错误,用来提高程序的稳定性和健壮性。

    java中的异常分为Checked Exception(非Runtime Exception)和UnChecked Exception(Runtime Exception),所有的异常类都直接或间接的继承Exception。Exception又直接继承自Throwable类,Throwable类的直接子类还有error类,不过当出现error时,程序会直接退出执行,程序处理不了error,所以这里重点讨论Exception类。RuntimeException类继承自Exception,运行时异常都直接或间接继承自RuntimeException类。其他继承Exception类的是非运行时异常,在编译期间可发现。运行时异常是在运行时才会出现的,如算术除零,在编译期间是可以通过的,但在运行时会抛出运行时异常,除数不能为零。

    java的异常处理有两种

    1、捕获异常

    结构如下

     1 try
     2 
     3 {
     4 
     5 //执行可能产生异常的代码
     6 
     7 }
     8 
     9 catch(RuntimeException e)
    10 
    11 {
    12 
    13 //对捕获的异常进行处理
    14 
    15 }
    16 
    17 catch(Exception e)//可定义捕获多个异常
    18 
    19 {
    20 
    21 //对捕获的异常进行处理
    22 }
    23 
    24 finally
    25 
    26 {
    27 
    28 //捕获完后要执行的代码,可有可无,如果有的话就一定会执行,不管有没有异常
    29 
    30 }
    try-catch-finally

    如果异常被catch捕获后,后面还有catch语句就不会执行了,但如果有finally的话就一定会执行finally块里面的语句。

    2、声明抛出异常

    在调用会产生异常的方法所在的方法声明处声明throws Exception,此方法将不会对该类异常进行处理,而是由该方法的调用者处理。

    3、人为的抛出异常

    直接在方法内抛出异常,throw exception;

    对于运行时异常推荐不对其进行处理。

    自定义异常是定义了一个继承自Exception类的子类,一般不会定义继承自RuntimeException类,在try块中存在return语句时,如果有finally块语句,那么也要先执行完finally块的语句之后再返回,但如果try块中存在System.exit(0)语句,就不会执行finally块的语句,因为System.exit(0)会终止当前运行的java虚拟机,程序会在虚拟机终止前结束执行。

    1 class myException extends Exception
    2 {
    3     public myException(String str)
    4     {
    5         super(str);
    6     }
    7 }
    myException

    异常在文件处理,输入输出流的应用场合等都会用上。

    常见的异常类型有

     1、java.lang.NullPointerException:空指针异常,出现该异常的原因就是某个引用为null,但程序中又调用了该引用的某个方法。

    2、 java.lang.ClassNotFoundException :找不到指定的类,可能是类未定义。

    3、java.lang.ArithmeticException:算术异常,如除数为零。

    4、FileNotFoundException:在文件处理中,找不到指定的文件。

    5、IOException:输入输出流异常

    6、SQLException:sql异常,执行sql语句出现错误。

    此外还有许多类型的异常,在以后的编程中会遇到。

    由于水平有限,文章中难免有错误的地方,欢迎指出错误或不足之处,共同进步。欢迎转载,转载时请注明出处,谢谢。 ——by CIACs
  • 相关阅读:
    Eclipse快捷键大全
    如何查看JDK_API 2019.2.23
    JXL、POI操作Excel
    Eclipse 将builder文件夹下的classes文件改路径到WEB-INF下,以及常用快捷键
    系统分盘
    U盘被识别为其他设备(显示U盘图标但是不显示盘符)的解决办法
    Oracle+jsp+Servlet的员工表的简单增删改查
    2019年3月8日09:06:02 mybatis 一对多
    linux 协议栈分享
    fib
  • 原文地址:https://www.cnblogs.com/zhi-hao/p/3967496.html
Copyright © 2020-2023  润新知