java异常(上)

异常概述

什么是异常?异常是程序在“编译”或者“执行”的过程中可能出现的问题,注意:语法错误不算在异常体系中,因为出现语法错误时虚拟机会提示你错误的地方。而真正的异常包括比如:数组索引越界、空指针异常、日期格式化异常等。

我们为什么要学习异常?在java里面程序出现了异常是会崩掉的,程序会推出然后虚拟机终止运行,研究异常并且避免异常,然后提前处理异常,体现的是程序的安全,健壮性。


异常体系

异常分为两大类,一类是Error,另一大类是Exception,由于Error代表的是系统错误我们暂不研究,我们要研究的是Exception代表的程序异常。 

RuntimeException及其子类:运行时异常:编译阶段不会报错。(空指针异常,数组索引越界异常)
除RuntimeException之外所有的异常︰编译时异常,编译期必须处理的,否则程序不能通过编译。(日期格式化异常)。


运行时异常类型

  • 数组索引越界异常:ArraylndexOutOfBoundsException
  • 空指针异常:NullPointerException,直接输出没有问题,但是调用空指针的变量的功能就会报错。
  • 数学操作异常:ArithmeticException
  • 类型转换异常:ClasscastException
  • 数字转换异常: NumberFormatException

运行时异常一般是程序员的自身问题~ 

编译时异常类型  

  •  除运行时异常之外的

处理机制:出现异常直接抛出去给调用者,调用者也继续抛出去。出现异常自己捕获处理,不麻烦别人。前两者结合,出现异常直接抛出去给调用者,调用者捕获处理。


异常的处理机制 

编译时异常

方法一:throws

在用在方法上,可以将方法内部出现的异常抛出去给本方法的调用者处理。这种方式并不好,发生异常的方法自己不处理异常,如果异常最终抛出去给虚拟机将引起程序死亡。

 方法二:try...catch

监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理。发生异常的方法自己独立完成异常的处理,程序可以继续往下执行。
语法格式:

try{
    // 监视可能出现问题的代码
}catch (Exception1 e) {
    // 处理异常
}catch (Exception2 e) {
    // 处理异常
}

1.怎么理解可能出现异常的代码呢?肯定不是把所有代码都放进去。例如我们有一个判断输入年龄的模块,要求用户输入,但时我们年龄类型设定的是int类型,而且年龄是有合理范围的,如果用户输入小数或者字符,那么此时程序就会出现异常,故应当把输入程序放到try监视里比较合适。

2.catch的括号里面异常类型是什么呢?我们如何选择?里面的异常类就是上文说到的:文件查找异常FileNotFoundException,数组越界异常ArrayIndexOutOfBoundsException等,就是告诉catch要找哪些错误,但通常情况下我们不会只写一种或者两种,而是直接把Exception e写道括号里,即代表所有的错误类型,企业级写法^.^

3.处理异常部分的作用?就是出现错误后运行里面的代码。有两种选择,你可以自定义方法,比如某变量不符合要求产生此类异常,你可以给它重新赋值,你也可以输出一句话:“数据异常!”等等。例外一种规范的方法是直接打印异常栈信息:语法--  catch(Exception e){ e.printStackTrace(); }  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值