Java菜鸟笔记:异常处理

  • 异常概述

刚开始学习java的时候,最怕的就是控制台(console)一片红,也就是程序的执行遇到了异常。但是后来随着学习与工作的深入,发现异常本身真是个好东西,有了异常机制,我们节省了大量的代码去检查错误,降低了错误的复杂度。一个健壮的程序必须包含异常处理部分。
异常情形是指阻止当前方法或作用域继续执行的问题。举例来说,当程序中的除法除数值为0的情况,就是一种异常情况。如果这种异常情形是你的意料之外,你没有相应的代码去处理它,这时候就应该抛出异常。
抛出异常的时候,有以下过程执行:
1、在堆中创建异常对象
2、当前的执行路径被终止
3、异常处理机制接管程序

遇到过程序异常的同学都知道,我们并不需要写任何异常处理的代码,系统自动会抛出遇到的异常类型。那是因为系统已经封装了很多基本的异常类型,系统会把这些异常throw出来,我们就可以在控制台看到相应的异常信息,以便于解决异常。
所有异常的根类是Throwable。
参考链接:https://blog.csdn.net/fu_pengfei_love822/article/details/71330721

  • 主动抛出异常
    系统抛出的异常具有局限性,而且不可控,我们可以在程序中设置遇到某种情况下主动抛出异常,这样我们就能清楚的知道哪里出了问题。
    Sample:
    if(t == null)
    throw new NullPointerException(“t的值为空”);
    如上所示,假设t是前面程序传入的变量,我们期待它有值,当它的值为空就是异常情形。这时候我们就throw一个空指针异常,并传参String类型"t的值为空"。如果我们代码运行,在控制台可以看到我们传入的信息被打印出来。
    从这段代码我们可以知道,我们可以选择抛出什么类型的异常,也包括我们自己创造的异常类(继承了Exception类),我们还可以选择是否传入异常信息。
  • 异常捕获
    抛出异常确实可以告知我们错误,避免程序继续错误的执行下去。但是有时候有些异常我们是可以忽视或者有办法应对的,这时候我们需要捕获异常。
    首先介绍try……catch
try{
	//code
}catch(Exception e){
	//应对异常
}finally{
	//总会执行
}

如果代码有可能抛出异常,我们把代码放入try块中,这样程序就能捕获抛出的异常;同时catch中定义的异常类型表示捕获哪种类型的异常。而finally中就放入最终一定会执行的代码,也可以省略。catch可以定义多个。
这样我们就可以自己定义异常类型,然后再某些情况下抛出异常,被try块捕获,然后做出相应的处理。这整个过程不会阻断程序执行,处理完catch中的代码后,程序会继续向下执行。

你可能感兴趣的:(java开发工程师,自学java)