java异常处理机制

Posted 牧羊人李七夜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java异常处理机制相关的知识,希望对你有一定的参考价值。

Exception 类的层次

java中所有的异常类是从 java.lang.Exception 类继承的子类。

而Exception 类是 Throwable (可抛出的)类的子类。除了Exception类外,Throwable还有一个子类Error 。

Java 程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。

Error 用来指示运行时环境发生的错误。

例如,例如操作系统崩溃, jvm出错, 动态链接库失败等,代表的是严重错误,  这种错误程序员一般无法进行处理

java中的异常基本分为

  • 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被忽略。
  • 运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

常见的检查性异常:在Java的标准包java.util 和 java.net 中定义的异常都是非运行异常。

常见的非检查性异常:

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组下标越界异常:ArrayIndexOutOfBoundsException

 

java中对异常的处理

  步骤主要是这几步:

  1. 对有可能出现的异常使用try catch处理,try catch处理后并不会终止程序,所以即使程序出现了错误,  也可以对错误进行一定的处理后继续执行. 
  2. 函数里并不处理异常,使用throw or throws 关键字.把可能出现的异常抛给调用该函数的上级函数处理,throws 关键字放在方法签名的尾部,而throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。
  3. 交给jvm虚拟机处理,这种情况只适用于RuntimeExecption及其派生类.
 
jvm怎么处理呢,  就是中断整个程序, 并把异常信息输出到屏幕上.

实际上, 当java程序的1个函数抛出异常时,  
首先会检查当前函数有没有try catch处理, 如果无检查上一级函数有无try..catch处理....
这样在函数栈里一级一级向上检查, 如果直至main函数都无try..catch, 则抛给jvm..
 
项目中强烈建议尽量手动处理, 不要把异常交给jvm.
 

java自定义异常

  在 Java 中你可以自定义异常。这是因为实际上, 当java程序执行时出现错误时, jvm会把执行时出错的信息(例如出错原因, 类型, 位置) 收集,然后打包成为1个对象(object),  程序员可以对这种对象进行处理. 这种对象就是所谓的异常.

编写自己的异常类时需要记住下面的几点。

  • 所有异常都必须是 Throwable 的子类。
  • 如果希望写一个检查性异常类,则需要继承 Exception 类。
  • 如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

例:

import java.io.*;

 

//自定义异常类,继承Exception类

public class Test_expt extends Exception{

  public Test_expt()

  {

    System.out.println("HelloWord");

  }

};

 

更详细的请看:

https://www.cnblogs.com/taiwan/p/7073743.html

以上是关于java异常处理机制的主要内容,如果未能解决你的问题,请参考以下文章

Java中的异常处理机制的简单原理和应用。

java异常处理详解!!

Java中的异常处理机制

Java中的异常处理机制

java异常处理的机制有哪几种

Java异常处理机制:try...catch...的执行流程