码迷,mamicode.com
首页 > 编程语言 > 详细

java异常处理机制

时间:2019-02-27 21:52:40      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:java   pes   问题   基本   需要   方法签名   中断   serve   出错   

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   pes   问题   基本   需要   方法签名   中断   serve   出错   

原文地址:https://www.cnblogs.com/qiyeyang/p/10446810.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!