java异常详细讲解_java异常总结详解

异常

异常的基本概念是用名称掉表发生的问题,并且异常的名称可以望文生义。

Throwable这个类被用来表示任何可以作为异常被抛出的类。

Throwable对象可分为2种类型()从Throwab继承过来的类

Error用来表示编译时和系统错误(除特殊情况一般不用关心)

Exception 用来表示可以抛出的类。

异常的处理流程

graph TD

A(开始) -->B[程序发生异常]

B --> C[实例化异常对象]

C --> D{是否有try?}

D -->|true|E{catch?}

D -->|false|F[输出异常信息]

E -->|true|I[处理异常]

E -->|false|G{catch?}

G -->|true|J[处理异常]

G -->|false|H{存在finally}

I -->H

J -->H

H -->|true|K[执行finally代码]

H -->|false|F

K -->L{是否已处理}

L --> |true|M[其他程序]

L --> |false|F

M --> N(结束)

F --> N

异常的使用指南

应该在下列情况下使用异常

- 在恰当的级别处理问题(指导该如何处理的情况下捕获异常)

- 解决问题并且重现调用产生的异常的方法

- 进行少许修补,然后绕过异常发生的地方继续执行

- 用别的数据进行计算,以代替方法预计会返回的值

- 把当前运行环境下能做的事情尽量做完,然后把==相同的==异常重抛到更高层。

- 把当前运行环境下能做的事情尽量做完,然后把==不同的==异常重抛到更高层。

- 终止程序

- 进行简化(如果你的异常模式使的问题变的太复杂,那就最好不要用异常)

- 让类库和程序变得更安全

注意点

在return 中使用finally:先执行finally中的内容,然后return

常见的面试题

Error和Exception的区别

Error 指 的是JVM错误,此时程序还没有执行,用户没法处理

Exception 指的是程序运行中出现的错误,用户可以处理

throws 和throw的区别

throws 用在方法声明上,表明此方法里面产生的异常交由调用处处理

throw 直接用throw手工抛出一个异常类的实例对象

Exception 和RuntimeException区别

Exception是RuntimeException的父类

使用Exception定义的异常必须要被处理,RuntimeExption异常可以选择性的处理

常见的RuntimeExption:ArithmeticException,NullPotionterException,ClassCastExption

在Java中什么是内存不足错误?

-在Java中,OutOfMemoryError是 java.lang.VirtualMachineError的一个子类,当堆内存耗尽时会被JVM抛出。我们能通过设置Java选项来提供更大的内存供应用使用来达到修复的目的。

java MyProgram -Xms1024m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=256m

Java中final,finally,finalize的区别?

final和finally在Java中是关键字,而finalize则是一个方法。

final关键字使得类变量不可变,避免类被其它类继承或方法被重写。

finally跟try-catch块一起使用,即使是出现了异常,其子句总会被执行,通常,finally子句用来关闭相关资源。finally方法中的对象被销毁之前会被垃圾回收。

Java中的检查型异常和非检查型异常有什么区别?

检查型异常和非检查型异常的主要区别在于其处理方式。检查型异常需要使用try, catch和finally关键字在编译期进行处理,否则会出现编译器会报错。对于非检查型异常则不需要这样做。Java中所有继承自java.lang.Exception类的异常都是检查型异常,所有继承自RuntimeException的异常都被称为非检查型异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值