异常的介绍与处理

目录

第七章  异常

1.异常

2.处理方法

2.1.try-catch

2.2.多重catch块

2.3.finally

2.4.throw 与 throws

2.5.程序分析

3.自定义异常


内容仅供学习交流,如有问题请留言或私信!!!!!

有空您就点点赞


1.异常

        什么是异常:指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序。

        异常分为Checked异常运行时异常

  • Checked异常必须捕获或者声明抛出
  • 运行时异常不要求必须捕获或者声明抛出  

常见的异常类型:

异常类型

说明

Exception

异常层次结构的父类

ArithmeticException

算术错误情形,如以零作除数

ArrayIndexOutOfBoundsException

数组下标越界

NullPointerException

尝试访问 null 对象成员

ClassNotFoundException

不能加载所需的类

IllegalArgumentException

方法接收到非法参数

ClassCastException

对象强制类型转换出错

NumberFormatException

数字格式转换异常,如把"abc"转换成数字

2.处理方法

        Java中的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws

2.1.try-catch

正常情况:执行  try-catch  后的代码段

public void method(){

         try {

                  // 代码段(此处不会产生异常)

         } catch (异常类型 ex) {

                 // 对异常进行处理的代码段

         }

         // 代码段

}

出现异常:捕获异常,异常是一种特殊的对象,类型为java.lang.Exception或其子类

public void method(){

         try {

                // 代码段 1

                // 产生异常的代码段 2

                // 代码段 3

         } catch (异常类型 ex) {

                 // 对异常进行处理的代码段4

         }

         // 代码段5

}

异常类型不匹配:

public void method(){

        try {

                 // 代码段 1

                // 产生异常的代码段 2

               // 代码段 3

        } catch (异常类型 ex) {

               // 对异常进行处理的代码段4

        }

        // 代码段5

}

  • catch块中处理异常
    • 加入用户自定义处理信息
  • 调用方法输出异常

    e.printStackTrace();

  • 异常对象常用的方法

方法

说明

void printStackTrace()

输出异常的堆栈信息

String getMessage()

返回异常信息描述字符串,

printStackTrace()输出信息的一部分

2.2.多重catch块

  • 引发多种类型的异常
    • 排列catch语句顺序:先子类后父类
    • 发生异常时按顺序逐个匹配
    • 只执行第一个与异常类型匹配的catch语句

2.3.finally

  • try-catch 后加finally块
    • 是否发生异常都执行
    • 不执行的唯一情况System.exit(1)

2.4.throw 与 throws

使用throws声明异常:

方法() throws 异常类型1,异常类型2 {   }

  • throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开。
    • 方式1:调用者处理异常
    • 方式2:调用者继续声明异常
      • main()方法声明的异常由Java虚拟机处理

使用throw抛出异常:

throw new 异常类型( );

eg:

throw new MyStackOperationException("xxxx,xxxx");//手动抛出异常

throwthrows区别

throw

throws

生成并抛出异常

声明方法内抛出了异常

位于方法体内部,可作为单独语句使用

必须跟在方法参数列表后面,不能单独使用

抛出一个异常对象,且只能是一个

声明抛出异常类型,可以跟多个异常

异常体系结构:

2.5.程序分析

try-catch-finally中存在return语句的执行顺序:

package dh07;

public class A {
	
	public int getInt(int i) {
		try {
			i++;
			return i;
		} catch (Exception e) {
			i++;
		}finally {
			i++;
		}
		return 0;
	}
	
}

//----------------------------------
package dh07;

public class test {
	public static void main(String[] args) {
		A a = new A();
		a.getInt(1);
		System.out.println(a.getInt(1));
	}
}

        输入 i=1 ,代码执行结果是:2,但此时 finally = 3 

3.自定义异常

使用步骤:

  1. 定义异常类(异常继承 Exception 类或者 RuntimeException)
  2. 编写构造方法,继承父类的实现
  3. 实例化自定义异常对象
  4. 使用throw抛出       

异常的处理原则:

  • 异常处理与性能
  • 异常只能用于非正常情况
  • try中不能存放大量代码
  • catch中制定具体的异常类型
  • 需要对捕获的异常做处理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚人钊呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值