Java基础——异常(Exception)

【后续内容:异常、集合、常用类,其实都是在面向对象的基础上,(即:我们需要解决一个实际的问题,Java为我们提供了一套API,API中可能有很多类、接口,它们之间有复杂的继承、实现关系),我们要做的就是学习这些类、接口,他们之间的关系,以及他们当中的一些方法】


一、异常概述:

  • 异常:程序执行过程中的"不正常"情况,(开发过程中的语法错误、逻辑错误,不算异常)
    【编写代码的过程中,不可能一点bug不出,很多问题并不是靠编码就能解决的,比如:用户输入的格式不对(整型故意或无意输错成String型),读取的文件不存在(误删了),网络是否保持畅通(断网了)】

  • 错误分两类:

    1. Error:Java虚拟机也无法解决的严重问题,如:JVM系统内部错误(虚拟机自己都崩了)、资源耗尽等严重情况,这种问题一般不专门编写新代码来处理;
      【解决不了,必须回头重写对应部分的源代码】
      【例如:栈溢出 StackOverflowError,堆溢出 OutOfMemoryError(OOM)】
    2. Exception:其他因编程错误或偶然的外因造成的一般性问题,这种问题可以通过编写针对性的代码来处理;
      【例如:空指针异常、试图读取的文件不存在、网络连接中断、数组下标越界】

【平时所说的异常都是Exception,因为Error是无法处理的严重错误,不考虑去专门处理,也处理不了,只能去重写错误源码】

public static void main(String[] args) {
   
	//栈溢出:java.lang.StackOverflowError
	main(args); //递归调用,没有出口
	
	//堆溢出:java.lang.OutOfMemoryError
	int[] arr = new int[1024 * 1024 * 1024];
	
	//空指针异常:java.lang.NullPointerException
	String str = null;
	System.out.println(str.charAt(0));
}
  • 两种解决方案:
    1. 遇到错误,直接终止程序(即:啥也不做);
    2. 提前考虑到错误的检测、错误消息的提示,以及解决方案

【就像:出去旅游,途中生病了,①直接躺了,啥也干不了了;②或者提前考虑到可能感冒、肚子疼,带好了药,如果途中没生病,更好,如果生病了,该吃药吃药】

  • 异常(Exception)的分类:
    1. 编译时异常:
    2. 运行时异常:

【处理错误的最佳时期是编译时,但有些错误只有在运行时才会发生(比如:除数为0,数组下标越界)】


二、异常体系结构

【图中Exception的子类中:红色为编译时异常,蓝色为运行时异常

补充:面试题:常见异常都有哪些?举例说明

 * java.lang.Throwable
 * 		|-----java.lang.Error:(一般不处理)
 * 		|-----java.lang.Exception:(需要处理)
 * 			|-----编译时异常(checked)【编译就不通过,提示"未处理xxx异常"(比如使用FileInputStream时,不try-catch,就会报错,提示没处理FileNotFoundException),单纯的语法写错了不叫编译时异常】
 * 				|-----IOException
 * 					|-----FileNotFoundException
 * 				|-----ClassNotFoundException
 * 			|-----运行时异常(unchecked,RuntimeException)
 * 				|-----NullPointerException
 * 				|-----ArrayIndexOutOfBoundsException
 * 				|-----ClassCastException
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值