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

(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 子句中进行声明。

捕捉所有异常_详解Java中异常的分类相关推荐

  1. java runnable 异常_详解Java中多线程异常捕获Runnable的实现

    详解Java中多线程异常捕获Runnable的实现 1.背景: Java 多线程异常不向主线程抛,自己处理,外部捕获不了异常.所以要实现主线程对子线程异常的捕获. 2.工具: 实现Runnable接口 ...

  2. java 死锁 内存消耗_详解Java中synchronized关键字的死锁和内存占用问题

    先看一段synchronized 的详解: synchronized 是 java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并 ...

  3. java comparator相等_详解Java中Comparable和Comparator接口的区别

    详解Java中Comparable和Comparator接口的区别 发布于 2020-7-20| 复制链接 摘记: 详解Java中Comparable和Comparator接口的区别本文要来详细分析一 ...

  4. java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换

    JSON使用阿里的fastJson为依赖包 gradle依赖管理如下: compile group: "com.alibaba", name: "fastjson&quo ...

  5. java list for循环遍历_详解Java中list,set,map的遍历与增强for循环

    详解Java中list,set,map的遍历与增强for循环 Java集合类可分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. 关于增强for ...

  6. Java中static的作用详解_详解java中static关键词的作用

    在java中,static是一个修饰符,用于修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能:被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载 ...

  7. java集合for循环_详解Java中list,set,map的遍历与增强for循环

    详解Java中list,set,map的遍历与增强for循环 Java集合类可分为三大块,分别是从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型集合. 关于增强for ...

  8. java中static修饰函数_详解java中static关键词的作用

    在java中,static是一个修饰符,用于修饰类的成员方法.类的成员变量,另外可以编写static代码块来优化程序性能:被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载 ...

  9. Java implement意思_详解JAVA中implement和extends的区别

    详解JAVA中implement和extends的区别 发布于 2020-4-14| 复制链接 摘记: 详解JAVA中implement和extends的区别extends是继承父类,只要那个类不是声 ...

最新文章

  1. C语言的特点与执行程序基本步骤
  2. codeforces D Good Substrings(hash)
  3. office2007安装提示“Windows Installer 服务不能更新一个或多个受保护的Windows文件...
  4. 《Android 应用案例开发大全(第二版)》——2.6节绘制相关类
  5. Navicat 安装+连接
  6. ReentrantLock重入锁
  7. 使用dict和set
  8. 《linux操作系统》第06章在线测试,Linux系统管理一测试题-附答案.doc
  9. 相机标定(3) opencv中solvePnPRansac()和solvePnP()计算外参数
  10. HDU_oj_2046 骨牌铺方格
  11. Leetcode每日一题:181.employees-earning-more-than-their-managers(超过经理收入的员工)
  12. java spring server_java server之spring中的IOC如何用java实现?
  13. 浅谈我对 jQuery 的了解
  14. 链路负载需求及基本原理
  15. 2位字母组合的全球国家或地区缩写
  16. js vue echarts 前端绘制 cie1931 马蹄图 色度图
  17. word另存为html 图片模糊,Word中插入图片模糊、不清晰的解决方法
  18. Java代理(静态代理、JDK动态代理、CGLIB动态代理)
  19. VM的三种网络连接方式
  20. 数据禾|全国10米DEM数字高程数据

热门文章

  1. Android 6.0 动态权限申请
  2. HDU4267(2012年长春站)
  3. [译]Java 垃圾回收介绍
  4. Vue 项目上线优化
  5. JavaScript的值传递和引用传递
  6. css3 pointer-events:none 允许点击穿透
  7. Jmeter===Jmeter中使用CSV Data Set Config参数化不重复数据执行N遍(转)
  8. 《嵌入式系统开发之道——菜鸟成长日志与项目经理的私房菜》——02-04项目范围(Scope)管理...
  9. 跨平台(Android, iOS, WP, HTML5)游戏开发libGDX学习教程
  10. Apache http强制转为https页面访问(转)