Java异常类详解(异常、错误)

Java异常类详解(异常、错误)

Throwable

在这里插入图片描述

在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。
Throwable 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子类,各自都包含大量子类。

一、Error(错误)

表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢 出 等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。

合理的应用程序不应该去try/catch这种错误。绝大多数的错误都是非正常的,就根本不该出现的。

二、Exception(异常)

是应用程序中可能的可预测、可捕获、可恢复问题。一般大多数异常表示中度到轻度的问题。异常一般是在特定环境下产生的,通常出现在代码的特定方法和操作中。遇到这类异常,应该尽可能处理异常,使程序恢复运行,二部应该随意终止异常。

1、运行时异常(Unchecked Exception)

RuntimeException类(未检查异常)是Exception的子类,叫做运行时异常,Java中的所有运行时异常都会直接或者间接地继承自RuntimeException类。

Java中凡是继承自Exception,而不继承自RuntimeException类的异常都是非运行时异常。

RuntimeException是 Exception 类的一个重要的子类。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。

运行时异常只有当代码在运行时才发现的异常,编译时不需要 try catch (运行时异常顾名思义就是程序运行时出现的异常,隐含的一个前提就是程序在编译时检测不到异常的存在,作者本人也并不知道自己的代码是否会有异常,所以根本不会用trycatch来捕获)。 Runtime 如除数是 0 和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。

运行时异常,编译器没有强制对其进行捕捉和处理。一般都会把异常向上抛出,直到遇到处理代码位置,若没有处理块就会抛到最上层,多线程用thread、run抛出,单线程用main()抛出。常见的运行异常包括空指针异常、类型转换异常、数字组越界异常、数组存储异常、缓冲区溢出异常、算术异常。

2、编译时异常(checked exception)

又叫非运行时异常(检查异常),必须对其进行处理,否则无法通过编译。

处理方式有两种:
 1.使用try…catch…finally进行捕获;
 2.在产生异常的方法声明后面写上throws 某一个Exception类型,如throws Exception,将异常抛出到外面一层去。
eption类型,如throws Exception,将异常抛出到外面一层去。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值