Java 异常处理与多线程概念

本文仅解释概念,无示例代码。


异常处理

错误和异常

在这里插入图片描述

  1. Throwable是所有异常的共同祖先,异常都是从Throwable继承而来的。Throwable有两个子类,Error和Exception。
  2. Error是错误,表示运行应用程序中出现了严重的错误,都是通过Error抛出的,一般是程序不能处理的系统错误。
  3. Exception是异常,表示程序运行时,程序本身可以捕获并且可以处理的错误。
  4. 异常和错误的区别是,异常是可以被处理的,而错误是没法处理的。

错误Error分类:

  1. Error类包括一些不能被程序员处理的严重的系统错误类,共有12个直接子类,一般表示代码运行时 JVM(Java 虚拟机)出现的问题,如内存溢出、虚拟机错误、栈溢出等。
  2. 这类错误与硬件有关,大多数错误与代码编写者执行的操作无关,通常由系统进行处理,程序本身无法捕获和处理。如:当JVM耗完可用内存时,将出现OutOfMemoryError。如Java虚拟机运行错误,将出现VirtualMachineError、类定义错误将出现NoClassDefFoundError等。
  3. 这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大多数是程序运行时不允许出现的状况。

异常Exception分类:

  1. 运行时异常(不受检异常) – RuntimeException类及其子类:表示JVM在运行期间可能出现的错误。编译器不会检查此类异常,并且不要求必须处理异常。如:空值对象的引用(NullPointerException)、数组下标越界(ArrayIndexOutBoundException)。此类异常属于不可查异常,一般是由程序逻辑错误引起的,在程序中可以选择捕获处理,也可以不处理。
  2. 非运行时异常(受检异常) --除RuntimeException及其子类之外的异常,如果程序中出现此类异常,如IOException,必须对该异常进行处理,要么使用try-catch捕获,要么使用throws语句抛出,否则编译不通过。

常用异常:

  1. 输入输出异常:IOException
  2. 算术异常类:ArithmeticExecption
  3. 空指针异常类:NullPointerException
  4. 类型强制转换异常:ClassCastException
  5. 操作数据库异常:SQLException
  6. 文件未找到异常:FileNotFoundException
  7. 数组负下标异常:NegativeArrayException
  8. 数组下标越界异常:ArrayIndexOutOfBoundsException
  9. 违背安全原则异常:SecturityException
  10. 文件已结束异常:EOFException
  11. 字符串转换为数字异常:NumberFormatException
  12. 方法未找到异常:NoSuchMethodException

处理异常关键字

在这里插入图片描述

try-catch-finally

异常的捕获处理:

  1. try:将可能出现错误的程序代码放在try块中,对try块中的程序代码进行检查,可能会抛出一个或多个异常。因此,try后面可跟一个或多个catch。
  2. catch:其功能是捕获异常,参数ExceptionObject是由try语句生成的。ExceptionType是Throwable类中的子类,它指出catch语句中所处理的异常类型。catch捕获异常的过程中,要将Throwable类中的异常类型和try语句抛出的异常类型进行比较,若相同,则在catch中进行处理。
  3. Finally:是这个组合语句的统一出口,一般用来进行一些“善后”操作,例如释放资源、关闭文件等。它是可选的部分。
  4. 运行时异常只有运行时才会出现,将出现异常的语句使用try- catch-finally结构包裹即可。
  5. 非运行时异常,是必须进行处理的异常,要么使用try-catch捕获,要么使用throws语句抛出,否则编译不通过。

多线程

  1. 程序:是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。
  2. 进程:是程序的一次执行过程,是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。
  3. 线程:是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。

也就是说:

  1. 简而言之,一个程序至少有一个进程,一个进程至少有一个线程。
  2. 线程的划分尺度小于进程,使得多线程程序的并发性高。
  3. 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
  4. 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
  5. 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值