异常

异常的概念: 指程序在执行过程中出现本身没有预料到的情况,从而导致程序错误结束, 但并不是所有的错误都是异常,并且错误有时候是可以避免的。 如打开一个不存在的一行
异常的分类:
  • 异常发生的原因
(一些因用户错误引起,程序错误,物理错误引起)
    • 用户输入了非法数据;
    • 要打开的文件不存在
    • 网络通信连接中断,JVM内存溢出
  • 异常分类:
    • 检查性异常:最具代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的,在编译时不能被简单的忽略
    • 运行时异常:运行时异常与检查性异常相反,可在编译时被忽略
    • 错误:是脱离程序员控制的问题,错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

Exception类的层次:

异常方法:
下面的列表是 Throwable 类的主要方法:

public String getMessage()
返回关于发生的异常的详细信息。这个消息在Throwable 类的构造函数中初始化了。

public Throwable getCause()
返回一个Throwable 对象代表异常原因。

public String toString()
使用getMessage()的结果返回类的串级名字。

public void printStackTrace()
打印toString()结果和栈层次到System.err,即错误输出流。

public StackTraceElement [] getStackTrace()
返回一个包含堆栈层次的数组。下标为0的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。

public Throwable fillInStackTrace()
用当前的调用栈层次填充Throwable 对象栈层次,添加到栈层次任何先前信息中。

异常的处理:

使用try{}catch{}关键字可以捕获异常,放在异常可能发生的地方。
throws/throw 关键字:   如果一个方法没有捕获一个异常,那么该方法必须使用throws关键字来声明,也可以使用throw关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。

finally关键字:
  • finally 关键字用来创建在 try 代码块后面执行的代码块。
  • 无论是否发生异常,finally 代码块中的代码总会被执行。
  • finally代码块中的语句先去catch执行,因此最好不要在该语句块中使用return。
声明自定义异常

在 Java 中你可以自定义异常。编写自己的异常类时需要记住下面的几点。
  • 所有的异常都必须是Throwable的子类
  • 如果希望写一个检查性异常类,则需要继承Exception类。
  • 如果希望写一个运行时异常类,则需要继承RuntimeException类。
  • 只继承Exception类来创建的异常类是检查性异常类。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值