Java异常
来源:互联网 发布:vasp软件价格 编辑:程序博客网 时间:2024/06/05 11:42
一.异常的概念
java异常java提供的用于处理程序中错误的一种机制。
所谓的错误是指在程序运行的过程中发生一些异常事件(如:除0溢出,数组小标越界,索要读取的文件不存在等)。
设计良好的程序应该在异常发生时提供处理这些错误的方法,是的程序不会因为异常的发生而阻断或产生不可预见的结果。
java程序在执行的过程中如果出现异常事件,可以生成一个异常对象,该对象封装了异常事件的信息并将被提交给Java运行时的系统,这个过程称为抛出(throw)异常。
当Java运行时系统接收到异常的对象时,会寻找处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。
二.异常分类
java中所有的异常都有一个共同的父类就是throwable(可抛出)。
throwable有两个重要的子类,分别是Exception(异常)和Error(错误)。
Error是程序无法处理的错误,表示运行应用程序中较严重的问题。
Exception是程序本身可以处理问题。
三.异常处理机制
在Java应用程序中,异常的处理机制为:抛出异常,捕获异常。
抛出异常:当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和和异常出现时的程序状态等异常信息。
捕获异常:在方法抛出异常之后,运行时的系统转为寻找合适的异常处理器。潜在的异常处理器是异常发生时依次留在调用栈中的方法集合。
3.1捕获异常-
1.try-catch语句
在java中,异常通过try-catch语句捕获。其一般语法形式为:
- try {
- // 可能会发生异常的程序代码
- } catch (Type1 id1){
- // 捕获并处置try抛出的异常类型Type1
- }
- catch (Type2 id2){
- //捕获并处置try抛出的异常类型Type2
- }
关键词try后的一对大括号将一块可能发生异常的代码包起来,称为监控区域。Java方法在运行过程中出现异常,则创建异常对象。将异常抛出监控区域之 外,由Java运行时系统试图寻找匹配的catch子句以捕获异常。若有匹配的catch子句,则运行其异常处理代码,try-catch语句结束。
匹配的原则是:如果抛出的异常对象属于catch子句的异常类,或者属于该异常类的子类,则认为生成的异常对象与catch块捕获的异常类型相匹配。
例1 捕捉throw语句抛出的“除数为0”异常。
- public class TestException {
- public static void main(String[] args) {
- int a = 6;
- int b = 0;
- try { // try监控区域
- if (b == 0) throw new ArithmeticException(); // 通过throw语句抛出异常
- System.out.println("a/b的值是:" + a / b);
- }
- catch (ArithmeticException e) { // catch捕捉异常
- System.out.println("程序出现异常,变量b不能为0。");
- }
- System.out.println("程序正常结束。");
- }
- }
- public static void main(String[] args) {
- int a = 6;
- int b = 0;
- try {
- System.out.println("a/b的值是:" + a / b);
- } catch (ArithmeticException e) {
- System.out.println("程序出现异常,变量b不能为0。");
- }
- System.out.println("程序正常结束。");
- }
- }
- java 异常,java,异常
- Java 异常 异常链
- Java异常
- Java 异常
- JAVA 异常
- Java异常
- java 异常
- Java异常
- java异常
- Java异常
- java异常
- java异常
- java异常
- java 异常
- java异常
- java异常
- java异常
- Java异常
- UltraEdit 激活 破解 教程
- SRM 670 div2 B BearSlowlySorts
- 代码手写UI,xib和StoryBoard间的博弈,以及Interface Builder的一些小技巧
- 每天一点matlab——如何将一幅图像(640*360)分成4个局域(160*90)读取
- 尺度空间文章
- Java异常
- HashMap死循环问题分析
- Flexbox——快速布局神器
- hihocoder 1252 Kejin Game dinic网络流
- Mysql中文乱码问题完美解决方案
- C++编程常见错误—cannot have cv-qualifier//不能有CV限定
- 奇异值分解(SVD)详解
- Java基础--List的创建
- H5小动画,分享一下!!