gpt4 book ai didi

Java异常基础知识解析

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java异常基础知识解析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Java程序运行的非正常现象叫做运行错误,根据其性质可分为两类:错误(Error)和异常(Exception); 他们有一个共同的父类(也是所有异常的顶级父类):Throwable.

异常类结构 。

Java异常基础知识解析

Error 。

Error(错误)由JVM生成并抛弃不做处理;此类错误通常与代码和执行的操作无关,是虚拟机中出现了比较严重的问题,程序本身无法解决(常见的错误有死循环、内存泄漏等).

一个常见的错误为Java虚拟机错误(VirtualMachineError),当JVM不再有继续执行操作所需的内存资源时,将出现OutOfMemoryError。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止.

Exception 。

Exception(异常)作为一个对象使用,由Java程序抛弃或处理;通常异常产生的原因有:代码或调用代码有错,操作系统资源不可用,公共语言运行库遇到意外; 。

异常分为由虚拟机生成的运行时异常(RuntimeException,如空指针、数组越界)和程序意外造成的非运行时异常(如IOException); 。

运行时异常:程序可以选择捕获处理或不处理直接抛掉;常见的运行时异常有算法溢出(超出数值表达范围)、除数为零、内存溢出、空指针、无效参数等,此类异常是程序本身编程出错,可以通过调整异常代码运行方向,使程序继续运行,直至正常结束; 。

非运行时异常:RuntimeException类型意外的异常都叫做非运行时异常,从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过;常见的非运行异常有IOException,例如:资源文件找不到等,是程序碰到意外情况无法执行成功.

注意:异常和错误的区别---异常能被程序本身可以处理,错误是无法处理.

可查异常和不可查异常 。

Java异常(ErrorandException)根据程序是否能够编译通过可以分为另外两类:可查异常(checkedexceptions)和不可查异常(uncheckedexceptions).

可查异常 。

可查异常:对应非运行时异常,编译器编译程序时可以检查预计到其中的错误,这种异常必须处理,两种处理方式:try-catch语句捕获异常或throws子句声明抛出异常,在方法体外头部声明抛出异常类型(使用throws抛出Exception),调用者可选择处理接收到的异常.

说到这两种处理方式,要说到Java异常处理的5个关键字:try、catch、finally、throws、throw 。

1、使用try-catch语句处理捕捉(方法头部不用声明) 。

try、catch、finally三个语句块不能单独出现,三者可以组合为:try-catch/try-catch-finally/try-finally.

catch块可以有多个,此时只能从上到下匹配其中一个catch块代码; 。

finally最多一个,三个语句块中定义的变量不可相互访问.

在该部分中,使用的是try-catch组合来处理可查异常,将异常向上抛出,实例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public XMLReaderHDU(String xmlFile){
     super ();
     this .xmlFile = xmlFile;
     this .fileName=StaticConfig.umlPathPrefixHDU;
     try
        {
         SAXReader reader= new SAXReader();
         Document dom=reader.read(xmlFile);
         root=dom.getRootElement();
     }
     catch (Exception e1)
        {
         Handle1……
     }
     catch (Exception e2)
        {
         Handle1……
     }
}

2、使用throws子句声明抛出(在方法体外头部声明抛出异常类型:使用throws抛出Exception) 。

首先,在方法体内部使用throw抛出异常; 。

然后,在方法体外头部声明,使用throws抛出内部抛上来的异常; 。

示例1:try-catch抛出异常 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public XMLReaderHDU(String xmlFile) throws Exception {
     super ();
     this .xmlFile = xmlFile;
     this .fileName=StaticConfig.umlPathPrefixHDU;
     try
        {
         SAXReader reader= new SAXReader();
         Document dom=reader.read(xmlFile);
         root=dom.getRootElement();
     }
     catch (Exception e1)
        {
         throw new Exception(e1);
     }
}

示例2:throw-throws 自定义异常 。

?
1
2
3
4
5
6
7
8
9
10
private List<UseCase> readUCInformation() throws Exception {
     if (e1.hasContent())
        {
         if (e1.element( "name" ).getText().equals( "preCondition" )){
             uc.setPreCondition(e1.elementText( "content" ));
         } else {
             throw new Exception( "用例约束条件获取异常,可能原因:约束类型或约束名称错误" );
         }
     }
}

不可查异常 。

不可查异常:包括错误Error和运行时异常RuntimeException 。

运行时异常在程序编译时可以通过,不能通过静态语法检测出来哪些函数可能抛出异常,在运行时才能发现异常(即取决于运行时状态,被运行态决定); 。

可以选择捕获处理或显示的抛除不处理(mustbecaughtordeclearedtobethrown)。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生.

总结 。

以上就是本文关于Java异常基础知识解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持! 。

原文链接:http://blog.csdn.net/csdn_terence/article/details/76222772 。

最后此篇关于Java异常基础知识解析的文章就讲到这里了,如果你想了解更多关于Java异常基础知识解析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com