栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

理解java中的异常

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

理解java中的异常

理解java中的异常

1、常见异常2、避免异常的两种处理(防御式编程)

2.1 LBYL:在操作之前就做充分的检查.2.2 EAFP:先操作, 遇到问题再处理. 3、异常的基本语法

3.1 捕获异常3.2 **异常的返回值问题**3.3 **关于异常的调用链**3.4**一组关键字:throws throw**
异常:异常指的就是程序在 运行时 出现错误时通知调用者的一种机制.不包含编译过程的异常
常见的主要有三种:除以 0、数组下标越界、访问 null 对象

1、常见异常
    除 0 异常
    空指针异常
    通过null调用成员方法或属性数组下标越界异常
2、避免异常的两种处理(防御式编程) 2.1 LBYL:在操作之前就做充分的检查.

LBYL 风格的代码(不使用异常)

boolean ret = false;
ret = 登陆游戏();
if (!ret) {
 处理登陆游戏错误;
    return; 
    }
ret = 开始匹配();
if (!ret) {
 处理匹配错误;
    return; 
    }
ret = 游戏确认();
if (!ret) {
 处理游戏确认错误;
    return; 
    }
ret = 选择英雄();
if (!ret) {
    处理选择英雄错误;
    return; }
ret = 载入游戏画面();
if (!ret) {
 处理载入游戏错误;
    return; }
......
2.2 EAFP:先操作, 遇到问题再处理.
try {
    登陆游戏();
    开始匹配();
    游戏确认();
    选择英雄();
    载入游戏画面();
   ...
} catch (登陆游戏异常) {
    处理登陆游戏异常;
} catch (开始匹配异常) {
 处理开始匹配异常;
} catch (游戏确认异常) {
 处理游戏确认异常;
} catch (选择英雄异常) {
 处理选择英雄异常;
} catch (载入游戏画面异常) {
 处理载入游戏画面异常; }
......
3、异常的基本语法 3.1 捕获异常

基本语法:

try{
// 存放可能出现异常的代码;
}[catch(捕获相应的异常)]{
// 出现异常后的处理方式
}[finally]{
// 无论是否发生异常都会执行,一般进行资源的释放
// 关闭资源的处理
}
例如使用 try catch处理异常:将可能报错的代码块放在try中,并用catch进行捕获,当出现异常后,不影响后面代码的正常使用

    数组越界异常

    空指针异常
    此时有多个catch可不捕获多种异常

    假设此时可能出现10种异常,若写10种很麻烦,可用向上转型,使用异常的共同父类Exception来捕获异常,不太推荐,一般明确知道会产生那种异常就捕获那种异常,方便排查问题

    关于异常的错误输出
    在java中,一切皆对象,上面的空指针、数组越界、Exception ——> 都是异常 类 当产生错误时,JVM会构造一个相应的异常对象传递给程序

catch(ArrayIndexOutOfBoundsException e)中的e就是异常对象,由JVM产生传递给catch代码段

e.printStackTrace();打印错误的堆栈信息 错误开始的位置

 int[] arr={10,20,30};
        // 将可能报错的代码放在try中,并用catch捕获
        try{
            System.out.println(arr[10]);
        }
        catch(ArrayIndexOutOfBoundsException e){
            System.out.println("数组下标越界");
             e.printStackTrace();
        }
3.2 异常的返回值问题

一旦finally中带了返回值,相当于try和catch中的返回值就失效了,无论异常发生与否,finally一定执行,因此会覆盖try和catch的返回值。
在finally中一般不推荐写返回值,除非返回值与异常无关,默认返回值可放在finally中

3.3 关于异常的调用链

异常会随着调用链向上传递,直到有一处捕获异常并处理为止。若调用过程都没有异常,最终会将异常抛给JVM,此时程序终止。

3.4一组关键字:throws throw

throws:用在方法声明上明确表示该方法有可能产生异常,但不处理,抛回给调用者处理

throw:用在方法内部,表示认为产生异常对象并抛出
在学习数据结构写栈等结构时,若栈为空,调用取出栈元素方法就可以使用throw手工抛出异常,告诉调用者栈为空,无法操作。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/712611.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号