《JAVA从入门到??》异常Exception

什么是异常

指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。java中的健壮性其实就是通过异常处理机制来保证的。
异常指的并不是语法错误,语法错了编译不通过,不会产生字节码文件,根本不能运行。

在Java等面向对象的编程语言中,异常本身是一个类(Throwable),产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。

在这里插入图片描述
1、捕获这个异常,不让它沿着调用栈继续向下抛出;
2、捕获这个异常(抛出伪造),并继续向下抛出;
3、不捕获这个异常,从而导致方法从调用栈中被弹出,异常对象继续抛给调用栈下面的方法。
4、如果没有出现如何异常,就正常沿着调用栈执行代码。

java异常处理的五个关键字:try,catch,finally,throw,throws
try 用来指定一块预防所有“异常”的程序;

catch 子句紧跟在try块后面,用来指定你想要捕捉的“异常”的类型;

throw 语句用来明确地抛出一个“异常”;

throws用来标明一个成员函数可能抛出的各种“异常”;

finally 为确保一段代码不管发生什么“异常”都会被执行一段代码;

捕获异常

java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。


注意:try和catch都不能单独使用,必须连用。当在try{}后更catch,catch类型先从小到大。
如何获取异常信息,Throwable类中定义了一些查看方法:
publuc String getMessage():获取异常的描述信息,提示给用户的时候,就提示错误原因。

public String toString():获取异常的类型和异常的描述信息

public void printStackTrace():打印异常的跟踪栈信息并输出到控制台。包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace

抛出异常throw

在编写程序时,我们必须要考虑程序出现问题的情况。比如:在定义方法时,方法需要接受参数。那么当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者。
在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象。那么抛出一个异常具体如何操作呢?

1、创建一个异常对象。封装一些提示信息(可以自己编写)。
2、需要将这个异常对象告知给调用者。怎么告知呢?怎么将这个异常对象传递到调用处呢?通过关键字throw就可完成,throw异常对象。
throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。

声明异常

将问题标识出来,报考给调用者。如果方法内通过throw抛出了编译时的异常,而没有捕获处理,那么必须通过throw进行声明,让调用者去处理。

关键字throws运用与方法声明之上,用于表示当前方法,不处理异常,而是提醒该方法的调用者来处理异常(抛出异常)。

声明异常格式:
修饰符 返回值类型 方法名(参数)throws 异常类名1,异常类名2…{}

自定义异常

在开发中根据自己业务的异常情况来定义异常类。
自定义一个业务逻辑异常:AccountLockException 一个账号被锁异常类。

异常类如何定义:
1、自定义一个编译期异常:自定义类 并继承与 java.lang.Exception

2、自定义一个运行时期的异常类:自定义类 并继承与 java.lang.RuntimeException

通过日志文件记录异常信息

1、导入日志jar包
2、log4j.properties放置src下
3、在具体类中使用日志记录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值