异常的分类:

图片损坏 编译时异常:除了RuntimeExcpetion和他的子类,其他都是编译时异常。编译阶段需要进行处理,作用在于提醒程序员。 运行时异常:RuntimeException本身和所有子类,都是运行时异常。

异常的作用:

作用一:异常是用来查询bug的关键参考信息
作用二∶异常可以作为方法内部的一种特殊返回值,以便通知调用者底层的执行情况

异常的处理方式

JVM默认处理异常的方式

  1. 把异常的名称,异常原因及异常出现的位置等信息输出在控制台
  2. 程序停止执行,异常下面的代码不会再执行了

try-catch处理异常

try-catch:提前预判程序中哪个地方可能会出现某种错误,出现后执行catch中的代码,并且程序可以继续运行
如果try中没有遇到问题,会将try中的所有代码全部执行完毕,并且跳过catch中代码
如果try中可能遇到多个问题,可以写多个catch与之对应,并且父类异常应该写在下面
如果try中遇到的问题没有被捕获,相当于try-catch白写了,异常交给虚拟机处理
如果try中遇到了问题,try下面其他的代码不会继续执行,直接跳转到对应的catch,此时try中后面的代码不会运行,但try-catch后面的其它代码会继续运行;
如果没有对应的catch,则交给虚拟机处理,此时后面的其它代码也不会运行
图片损坏

throws和throw

throws:写在方法定义处,表示声明一个异常,告诉调用者,使用本方法可能会有哪些异常,其中编译时异常必须要写,运行时异常可以不写

1
2
3
public void 方法() throws 异常类名1,异常类名2...{
...
}

throw:写在方法内,结束方法,手动抛出异常对象,交给调用者,并且方法中下面的代码不再运行

1
2
3
public void 方法(){
throw new NullPointerException();
}

三种异常处理方式的对比

1.虚拟机默认处理异常的方式
把异常信息以红色字体打印在控制台,并结束程序
2.捕获:try…catch
一般用在调用处,能让代码继续往下运行。
3.抛出: throw throws
在方法中,出现异常了。
方法就没有继续运行下去的意义了,采取抛出处理。
让该方法结束运行并告诉调用者出现了问题。

自定义异常

定义异常类,名字格式:当前异常的名字+Exception
写继承关系,由于参数错误导致的问题继承RuntimeException,提醒程序员检查本地信息继承Exception
空参构造,ctrl+alt+insert
带参构造,ctrl+alt+insert
让控制台的报错信息更加见名知意,自定义异常类就是为了这个名字

异常的常见方法:

public string getMessage() 返回此throwable 的详细消息字符串
public String toString() 返回此可抛出的简短描述
这两个方法要用变量存储返回值后再打印在控制台
public void printstackTrace() 把异常的错误信息输出在控制台
只是打印消息,不会终止程序运行
//System.err.println(“something”)
以红色字体将消息打印在控制台