Java学习概论第十七节

Java异常

一、异常概述

• 这种在运行时出现的意外错误称为“异常”
• 对异常的处理机制也成为判断一种语言是否成熟的标准。
• 好的异常处理机制会使程序员更容易写出健壮的代码,防止代码中Bug的蔓

1、 异常类

Java中的异常类可以分为两种:
• 错误(Error):一般指与虚拟机相关的问题,如系统崩溃、虚拟机错误、
动态链接失败等,这些错误无法恢复或捕获,将导致应用程序中断;
• 异常(Exception):因程序编码错误或外在因素导致的问题,这些问题能
够被系统捕获并进行处理,从而避免应用程序非正常中断,例如:除以0、
对负数开平方根、空指针访问等。

Throwable是所有异常类的父类,Error和Exception都继承此类:
当程序产生Error时,因系统无法捕获Error并处理,程序员将无能为力,
程序只能中断;
当发生Exception时,系统可以捕获并做出处理,因此本章所介绍的异常处
理操作都是针对Exception及其子类而言的。
Exception异常从编程角度又可以分为以下两种类型:
非检查型异常:编译器不要求强制处置的异常,该异常是因编码或设计不当导致的,这种异常可以避免,RuntimeException及其所有子类都属于非检查型异常。
检查型异常:编译器要求及其子类(RuntimeException及其子类除外)都属于检查型异常必须处理的异常,该异常是程序运行时因外界因素而导致的,Exception。

2、常用的异常类

非检查型异常:
类名 说明
ArrayIndexOutOfBoundsException 数组下标越界异常
NullPointerException 空指针访问异常
NumberFormatException 数字格式化异常
ArithmeticException 算术异常,如除以0溢出
ClassCastException 类型转换不匹配异常
检查型异常:
SQLException 数据库访问异常
IOException 文件操作异常
FileNotFoundException 文件不存在异常
ClassNotFoundException 类没找到异常
• 检查型异常体现了Java语言的严谨性,程序员必须对该类型的异常进行处理,否则程序编译不通过,无法运行。RuntimeException及其子类都是Exception的子类,Exception是所有能够处理的异常的父类。
• 异常是在程序执行期间产生的,会中断正常的指令流,使程序不能正常执行下去 。
• 为了使程序出现异常时也能正常运行下去,需要对异常进行相关的处理操
作,这种操作称之为“异常处理”。
• Java的异常处理机制可以让程序具有良好的容错性,当程序运行过程中出
现意外情况发生时,系统会自动生成一个异常对象来通知程序,程序再根据
异常对象的类型进行相应的处理。

Java提供的异常处理机制有两种:
• 使用try…catch捕获异常:将可能产生异常的代码放在try语句中进行隔离,如果遇到异常,程序会停止执行try块的代码,跳到catch块中进行处理。
• 使用throws声明抛出异常:当前方法不知道如何处理所出现的异常,该异
常应由上一级调用者进行处理,可在定义该方法时使用throws声明抛出异常。

3、捕获异常

Java中捕获异常并处理的语句有以下几种:
• try…catch语句
• try…catch…finally语句
• 自动关闭资源的try语句
• 嵌套的try…catch语句
• 多异常捕获
try…catch语句:
(1) 单catch处理语句
• 单catch处理语句只有一个catch,是最简单的捕获异常处理语句:

try {
    
	// 产生除以0的算术异常 
	int i = 10 / 0; 
	System.out.println("i的值为:" + i); 
} catch (Exception e) {
    
	// 输出异常信息 
	e.printStackTrace(); 
} 
// 该条语句继续执行 
System.out.println("end");

• 所有异常对象都包含以下几个常用方法用于访问异常信息:
• getMessage()方法:返回该异常的详细描述字符串;
• printStackTrace()方法:将该异常的跟踪栈信息输出到标准错误输出;
• printStackTrace(PrintStream s)方法:将该异常的跟踪栈信息输出到指
定输出流;
• getStackTrace()方法:返回该异常的跟踪栈信息。
(2)多catch处理语句

代码1:
Scanner scanner = new Scanner(System.in);  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值