黑马程序员-异常

时间:2022-12-08 21:34:53
---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ----------------------

异常概述

  不正常就是异常!

什么叫异常

编译错误:不能生成class文件;

异常:运行class时出现错误。

2 谁能产生异常

  方法就是行为,只有行为才能异常!

3 异常是方法返回的另一个途径

一个方法,要么按声明的返回值类型返回一个正确的值;

要么返回给调用者一个异常类的对象。

4 异常的根类及两个子类

ThrowableErrorException

Error:大错!JVM内部错误!内存溢出(栈溢出、堆溢出)

Exception :小错!有些是外因(处理问题),有些是内因,自己改正!

5 异常涉及的关键字

throw  抛出异常

throws  声明异常

try  监控

catch  抓捕

finally  总是执行

声明异常

1 声明异常的语法

声明异常是给方法声明异常!

public int fun() throws IOException{

}

public int fun() throws IOException,SQLException{

}

表示这个方法正常流返回一个int类型

错误流返回一个输入输出相关的异常对象。

异常类型可以是Throwable或其子类型!

2 声明异常的方法说明什么

  声明异常的方法说明这个方法被调用可能会有两种可能,一种是返回正确的值,另一种就是返回声明的异常对象。

3 main也可以声明异常

main也可以声明异常。

一个方法a,调用了方法bb声明了异常,这说明b有危险。那么因为a调用b,那么a也就可能存在危险,这就需要处理异常(危险)了。

声明异常不代表就出现了异常,只是表示有可能出现异常!

抛出异常

1 使用throw语句抛出异常

  throw 异常对象;

2 执行了整数除以0的语句

  使用一个整数创除以0

3 调用了声明异常的方法有可能抛出异常

  声明异常的方法有可能抛出异常。

4 当方法抛出异常后

  当方法真的抛出异常后,而且异常没有被捕获到,那么异常就抛出了。这个方法就返回了!但返回给调用者一个异常对象。

处理异常

1 包含危险语句

整数除以0

调用声明那批的方法

throw语句

一个方法内包含了如上面给出的几种语句,那么这个方法就需要处理异常了。

两种选择:

让本方法声明异常:告诉调用者我这个方法有可能出现异常;

把异常处理了,让外界不知道出现了异常。

2 声明异常

只要声明了这个异常,那么就可以了。

但对于调用我们这个方法的方法而言,也需要处理危险了。

3 捕获处理异常

  抓捕需要使用trycatch

抓捕异常

1 抓捕异常的格式

  trycatchfinally

2 trycatch格式的执行流程

  try是监控区,在try中出现异常会去找catch进行匹配,如果出现的异常类型与catch中给出的异常类型相同,那么就抓到了,然后交给catch处理。

3 trycatch格式及限制

为什么要一个try对应多个catch:因为最好把异常的处理分门别类,不能的异常用不同的处理方案。

当在try中出现异常后,系统拿着这个异常对象由上到下与catch进行匹配,如果找到了匹配的catch,那么就把异常对象交给它,并执行这个catch中的代码。

4 trycatchfinally格式执行流程

try {

} catch(NullPointerException e) {

} catch(Exception e) {

} finally {

 //总是执行

}

5 finally中放什么样的代码

放无论如何都要执行的代码。

后面我们会学习IO流、数据库、网络连接,这些东西在使用之后都需要关闭,这个关闭就是需要总是执行的代码,通常会放到finally中。

finally不能单独存在,它必须与try在一起使用。

当然,也可以与trycatch一起使用。

try {

} finally {}

catch也不能单独使用,也要与try一起使用。

try也不能单独使用,它要么与catch一起,要么与finally一起。

finally:正常执行:在上面代码中没有出现返回的可能,那么就从上到下执行,直到执行到finally内容。

插队执行:当上面代码出现返回(return,抛出异常)可能,那么在返回动作之前,finally插队执行,执行之后,再完成返回动作。

6 当finally遇见System.exit(0)

  当finally之前执行了System.exit(0)表示程序马上结束,这时finally中的代码就不会再执行了。

异常类方法介绍

1 Throwable介绍

String getMessage():返回异常信息。通过构造器设置。

String toString():把异常对象转换成字符串形式。

void printStackTrace():向控制台打印异常调用栈!

Throwable()

Throwable(String msg):在创建异常对象时,给出异常信息

Throwable(Throwable cause):在创建异常对象时,给出异常起因!

Throwable(String msg, Throwable cause):在创建异常对象时,指定信息和起因

2 Exception介绍

Exception()

Exception(String msg)

Exception(Exception cause)

Exception(String msg, Exception cause)

  基本所有异常类都是有这四个构造器!