Java异常

一下内容来自《疯狂java讲义》

异常的定义和概念

java的异常机制主要依赖于try、catch、finally、throw和throws五个关键字
try:紧跟一个{},简称为try快,它里面放置可能引发异常的代码
catch后面应对异常类型和一个代码块,表明该catch块用于处理这种类型的代码块,多个catch后面还可以跟一个finally块
finally:异常机制会保证finally块总被执行。
throws:在方法签名中使用,申明该方法可能抛出的异常,
throw:用于抛出一个实际的异常,throw可以单独作为语句使用,抛出一个具体异常对象
Checked异常(编译异常):在编译阶段被处理的异常,所以它强制程序处理所有的Checked异常,
Runtime异常(运行时异常):

异常处理机制

异常的处理机制可以让程序具有更好的容错性,让程序更加健壮。当程序运行出现意外情形时,系统会自动生成一个Exception对象来通知程序从而实现业务功能实现代码错误处理代码分离,提供更好的可读性

当Java运行环境受到异常对象时,会寻找能处理该异常对象的catch块,如果找到合适的catch块并把该异常对象交给该catch块处理,这个过程被称为捕获异常。 如果java运行时环境找不到捕获异常的catch块,则运行时环境终止,Java程序页也将退出。
在进行异常捕获时,一定要先捕获小的异常,再捕获大的异常,所有的异常对象都包含了一下几个常用方法:
getMessage():返回该异常的详细描述字符串
printStackTrace():将该异常的跟中栈信息输出到标准错误输出
printStackTrace(PrintStream s):将该异常的跟踪信息输出到指定输出流
getStackTrace():返回该异常的跟踪信息

Checked异常和Runtime异常

1.使用throws声明抛出异常

当前方法不知道应该如何处理这种异常的类型,该异常应该由上一级调用者处理,如果main方法也不知道应该如何处理这种类型的异常,也可以使用throws声明抛出异常,将该异常交给JVM处理。JVM对异常处理的方法时:打印异常跟踪栈信息,并终止程序运行,这就是面前程序在遇到异常后自动结束的原因。throws声明抛出异常的格式:用,分隔
throws ExceptionClass1,ExceptionClass2…

抛出异常的原则
方法重写的两小原则:子类方法中声明抛出的异常类型应该是父类方法声明抛出的异常类型的子类或相同,子类方法中不允许比父类方法声明抛出更多异常

使用Throw抛出异常

抛出异常

当程序出现错误时,系统会自动抛出异常;除此之外,java也允许程序自行抛出异常,自行抛出异常使用throw语句完成。很多时候,系统是否要抛出异常,可能需要根据应用的业务需求决定,如果程序中的数据、执行与既定的业务不符合,那这就是一种异常。语法格式如下:
throw ExceptionInstance;

自定义异常

public class AuctionException extends Exception{
	public AuctionException() {
		
	}
	
	public AuctionException(String msg) {
		super(msg);
	}
	
	public AuctionException(Throwable t) {
		super(t);
	}
}

try{} catch()finally{}

当java程序执行try块、catch块遇到return或throw语句,这两个语句都会导致该方法立即结束,但是系统并不会立即执行这两个语句,而是去寻找该异常处理流程中是否包含finally块,如果没有finally块,程序立即执行return语句或throw语句,方法终止。如果有finally,系统立即执行finally块。只有当finally块执行完成后,系统才会再次跳转回来执行try快、catch快里面的return或throw语句。如果finally快里也使用return或throw等方法导致终止的语句,则finally快已经终止了方法,系统将不会跳回去执行try快、catch快里面的任何代码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值