Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 336|回复: 0

JAVA异常处理原理浅析

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-4 01:36:24 | 显示全部楼层 |阅读模式

    一,异常的分类

    1、Throwable是java.lang包中一个专门用来处理异常的类。它有两个子类,即Error 和Exception,它们分别用来处理两组异常。

    2、Throwable类是整个异常体系类的“父级类”,当然最终追根溯源到底的父类当然要归于Object类。

    Throwable类实现了Serializable接口,表示Throwable可以进行序列化,继承自Object类,他的子类主要是Error和Exception类还有一个StackRecorder类

    3、Exception是Throwable的一个主要子类。Exception下面还有子类,其中一部分子类分别对应于Java程序运行期异常,另一部分是编译异常(报红)。

    4、常见的运行期异常:

    1. NullPointerException - 空指针引用异常
    2. ClassCastException - 类型强制转换异常。
    3. IllegalArgumentException - 传递非法参数异常。
    4. ArithmeticException - 算术运算异常
    5. ArrayStoreException - 向数组中存放与声明类型不兼容对象异常
    6. IndexOutOfBoundsException - 下标越界异常
    7. NegativeArraySizeException - 创建一个大小为负数的数组错误异常
    8. NumberFormatException - 数字格式异常
    9. SecurityException - 安全异常
    10. UnsupportedOperationException - 不支持的操作异常

    二,java对异常的处理方式

    如果出现问题,java会根据问题所描述的异常类,创建一个对象(实例),然后将该对象即问题抛给上一级,具体步骤:

    method具体出异常处  ->   main主方法  ->  jvm虚拟机 -> 将异常出现的位置和原因打印在控制台。

    三,异常的处理方式

    1.问题可以自己处理掉

    try-catch

    try{

    //异常可能发生的代码

    }catch(//要抓捕的异常){

    //异常处理方式

    }

    PS:return

    结论,try,catch,finally语句块的return的优先级由低到高,先执行try中return之前的语句,如果遇到异常,则执行catch语句中return之前的代码,最后执行finally语句块,finally语句块中如果有return,那么程序就会提前返回,如果没有,则返回catch语句块中的return,如果没有遇到异常,则直接执行finally中的语句块,再看finally语句块中是否有return来决定返回结果。

    参考:https://www.cnblogs.com/mfrank/p/7895660.html

    2.问题自己处理不了

    throws

    如果自己定义一个person类,成员变量是age,int类型,在set中规定年龄必须在0-150之间否则会throw new Exception(“您的年龄有误,请重新输入”),并在类上标记throws Exception,告知调用者;

    当另外一个类Person p=new Person();p.setAge(-10)会报编译时期异常,需要继续向上抛。(PS;若throw new RunTimeException则不报红,见下图)

    throw:是将异常对象抛给调用者

    throws:只是一个对方法的声明,告知调用者此方法存在异常。

    3.自定义异常:

    就是要一个规范的异常类名,根据异常类名能够分析出问题所在的原因;、

    找一个类,继承Exception,或者RuntimeException。

    例子:

    person类

    调用者类

    正常打印信息;(看不出问题原因)

    自定义异常类

    自定义异常打印异常:

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-1 12:00 , Processed in 0.060265 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表