java_异常

异常

概述

        异常指程序在执行过程中出现的状况

        在Java等面对对象的编程语言中,将异常问题,用指定的类来表示,并提供一定的处理办法

        Java中默认将异常交给jvm,jvm处理异常方式,即结束虚拟机,中断运行

异常体系结构

        编译(checked)异常:编译时期,(编译时)被检查的异常,需明确处理方式,否则编译失败

        运行(runtime)时异常:运行时期,(编译时)默认被声明的异常,运行时期出现问题,会报错

抛出异常

概述

        throw:抛出(方法中使用) 手动抛出异常类的实例化对象,即产生异常

格式

        throw new 异常类名(参数);

声明异常

概述

        throws:处理异常的方式(方法声明上使用) 声明方法中存在的一个或多个异常类型,即把问题交给调用者处理

格式

        修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2....{//方法体}

应用

        运行时异常默认被声明

        编译时异常,未捕获,就必须通过throws声明,否者编译报错

        当异常出现,将这个异常对象传递给调用者,并结束当前方法

捕获异常

概述

        try...catch: 处理异常的方式(方法内使用) 捕获方法中存在的一个或多个问题标识,即编码者自己处理

        异常被捕获,会避免将异常交给JVM处理,从而保障后续程序的执行

格式

        try{

                编写可能会出现异常的代码

        }catch(异常类型 变量名){

                处理异常代码/记录日志/打印异常信息/继续抛出异常

        }

应用

        运行时异常,被捕获,优先以捕获形式处理

        编译时异常,被捕获,不再需要通过throws声明

        当异常出现,异常被catch捕获,try中出问题位置之后的代码不再执行,程序继续执行catch后的内容

打印异常信息

        public void printStackTrace();打印异常的跟踪栈信息并输出到控制台

finally关键字

概述

        try...[catch...]finally:当try中内容执行,finally一定执行,若try执行前程结束(try没有执行),finally不执行

格式

        try{

                编写可能会出现异常的代码

        }catch(异常类型 变量名){

                处理异常代码/记录日志/打印异常信息/继续抛出异常

        }finally{

                try中代码执行后,一定要执行后,一定要执行的操作,常用于结束资源

        }

使用形式

        多个异常分别try,分别获取(处理)

        多个异常一次try,分别获取(处理)

        多个异常一次try,一次获取(处理)

        try{

                编写可能会出现异常的代码

        }catch(异常类型 变量名){

                处理异常代码/记录日志/打印异常信息/继续抛出异常

        }

        ...

        try{

                编写可能会出现异常的代码

        }catch(异常类型1|异常类型2... 变量名){

                处理异常代码/记录日志/打印异常信息/继续抛出异常

        }

注意事项

        父类的方法声明异常,子类覆盖(重写)父类方法时,只能声明相同的异常或该异常子集

        父类的方法未声明的异常,子类覆盖(重写)父类方法时,只能捕获,不能声明

        try...catch捕获多个异常时,前边捕获的类不能是后边类的父类或同类

自定义异常

意义

        异常具备发生后的JVM阻断功能及finally的强制执行,且具备复用性,if语句只能解决基本的逻辑判断,异常更号用一些

        像类一样,java中不可能为所有情况提供异常,开发中的一些异常类型需要根据业务自行定义(例:年龄负数问题)

格式

        自定义编译期异常:自定义类 并继承于java.lang.Exception

        自定义运行时期异常:自定义类 并继承于java.lang.RuntimeException

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值