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入门到精通教程
查看: 322|回复: 0

Java中异常的分类

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

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-27 09:56:00 | 显示全部楼层 |阅读模式

    下面介绍几种常见的异常类型,便于在出错时对程序进行查错:

      (1)Exception    各种异常的根类

           如果你不知道将发生的异常集体属于哪,而可以肯定种这个地方会出现异常时,可以把异常类型定义为Exception。

      (2)ArithmeticException     算数运算错误异常

           这个异常是在算数运算时经常遇到的,常见的情况是除数为0时抛出的异常。

      (3)ArrayIndexOfOutBoundsException    数组下标越界

           编程时要记住Java数组下标是从0开始的,数组下标最大值为数组长度减1,如arr[10],最后一个数组元素是arr[9],如果写成arr[10]就会出现ArrayIndexOfOutBoundsException异常。

      (4)NullPointException    空指针异常

           这个异常是针对调用未经初始化或未定义的对象抛出的异常。

      (5)ClassNotFoundException   不能加载所需的类

           在java文件编译后,可能是由于需要把.class文件移到了其他的文件夹,此时引用这个.class文件要注意修改其路径,否则会抛出ClassNotFoundException异常。

      (6)InputMismatchException    输入的数据类型与所需类型不匹配异常

           比如你需要int类型,但是通过输入框得到的是String类型,就会抛出InputMismatchException异常。

      (7)IllegalArgumentException   方法接受非法参数

           这个是传入方法中的参数类型不正确,如方法plus(int a,int b),调用时写成a.plus(1,a)就会出现

    IllegalArgumentException异常。

      (8)NumberFormatException    字符串转换成数字异常

           在数据类型强制转换时出现的异常,字符串“123”转换成数字123不会出现异常,但是字符串“1@23”转换成int类型就会抛出ClassCastException异常。     



    这些是常见的RunTimeException(运行时异常),也就是说,这些异常不需要强制声明会抛出,或者强制捕捉的异常。

     

     

    举两个例子

    程序出了那种异常JVM就会抛出相应的异常 比如代码:
    ArrayIndexOutOfBoundsException public void demo1(){
    try{ int a = 10/0; }
    catch(ArithmeticException ae)
    { System.out.println(“算术运算异常:”+ae.getMessage()); }
    catch(Exception e)
    { System.out.println(“其他异常”+e.getMessage()); } }
    public void demo2()
    { String strList[] = {"a","b","c"}; try{ String str = strList[4].toString(); }
    catch(ArrayIndexOutOfBoundsException ae)
    { System.out.println(“数组下标越界:”+ae.getMessage()); }
    catch(Exception e)
    { System.out.println(“其他异常”+e.getMessage()); } }

    总之Exception是所有异常的父类.如果你出现的异常被他的子类捕捉了,他就不会再捕捉比如demo2()方法
    如果是出现了ArrayIndexOutOfBoundsException Exception就不会捕捉了! 那么为什么要捕捉多次呢?
    因为ArrayIndexOutOfBoundsException只是数组下标越界的异常,所以它比Exception更的仔细,更能说明异常的原因!
    如果不是出现ArrayIndexOutOfBoundsException则Exception就会来捕捉


    所有异常,都继承自java.lang.Throwable类。
    Throwable有两个直接子类,Error类和Exception类。
    Exception
    Exception则可使从任何标准Java库的类方法,自己的方法以及运行时任何异常中抛出来的基类型。
    异常可分为执行异常(RuntimeException)和检查异常(Checked Exceptions)两种
    RuntimeException
    RuntimeException在默认情况下会得到自动处理。所以通常用不着捕获RuntimeException,但在自己的封装里,也许仍然要选择抛出一部分RuntimeException。
    RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-2-1 17:51 , Processed in 0.063729 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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