java高级——异常和错误 常见的十种运行时异常

异常和错误

基本的概念:都是一些具体的类和类中的方法
异常类的超类 Throwable
异常类 Exception 继承 Throwable
错误类 Error 继承Throwable

每一个异常类 都是Exception的子类 它封装了一种错误信息。

常见的运行时异常

ArithmeticException 被除数不能为0的异常
NullPointerException 空指针异常
ArrayIndexOutOfBoundsException 数组下标越界异常
ClassCastException 类型转换异常
ArrayStoreException 尝试将一个不同的数据类型存放到数组中
IndexOutOfBoundsException 尝试从容器中获取一个没有的数据
DateTimeException LocalDateTime会抛出这个异常
NegativeArraySizeException 创建一个负数的数组
NumberFormatException 尝试将一个错误的字符串格式转换为数字 必须为数字格式的字符串
IllegalArgumentException 代码格式参数传递错误

编译型异常

ClassNotFoundException 少个类 或者缺少jar包

异常的特点:
1.异常类 封装了一些错误信息,根据错误信息,以及代码错误行数去修改代码 从而避免发生这样的异常
2.一旦碰到异常 它下面的代码就停止了…
3.编译的异常一定要try…catch 一般来说我们的使用方式 都是打印错误信息
3.IO流 和 网络编程 一定要在catch中关闭资源
inputstream.close();
outputstream.close();
reader.close();
writer.close();
自定义异常
自定义编译异常 extends Exception
自定义运行时异常 extends RuntimeException

1.什么叫做异常?

异常就是我们程序在运行过程中可能会发生的错误,这个错误就叫做异常。
异常类和异常对象本身没有实际的用途,一般它封装了错误的信息。
异常的目的是为了让我们知道是个什么错误。哪一行报错。
异常的种类
编译型异常 都是需要try…catch
如果你不给他try…catch或者throws 它编译都不会通过
由你自己来定义程序出错之后的解决方案
当碰到错误之后 代码还要执行 可以用try…catch 并且将要执行的代码放到catch中
运行时异常 RuntimeException的子类都不需要强制的try…catch
运行时异常在代码运行过程中才能检查出错误信息
运行时异常 系统默认的就已经给了你一种的处理方式 打印错误信息
2.什么叫做错误?

Error Throwable的子类 普通的类 封装了错误的信息。
当我们碰到错误之后,根据错误的信息找到相应的类 查看他的错误或者异常的含义,从而分析代码,解决代码的问题
StackOverflowError 栈溢出的错误

3.异常和错误的区别?

异常是可以通过修改代码避免 修改代码后 逻辑还在 异常是可以避免的
错误是是无法避免的 代码中存在错误 只能删除代码 逻辑就更变了

4.什么用到异常?

一、一旦遇到检查型异常代码 一定要及时使用try…catch处理,不要继续往后面抛
二 、如果当前的代码存在多个异常 不要使用Exception来捕获异常 要区别处理
三、使用io流或者网络编程 这种占用系统内存极高的类 一定使用finally关闭资源
四、 检查型代码中也可以有return语句 return 语句必须在try{}catch中都要有
return 语句在finally可以有可以没有 如果有 返回值结果一定是他
在finally块后也可以有return 但是会和finally起冲突 两者只能选其一

5.为什么有的时候需要使用异常,为什么有的时候不需要?

1.写代码都是不安全的代码
2.代码中是运行时异常 Jvm会帮助我们打印错误信息,我们就不需要使用异常
如果代码是检查型异常 说明当前的代码我们一定要按照异常的处理方式去处理
处理最基本的方式就是打印错误信息

你可能感兴趣的:(java学习笔记)