异常概述
广义上的异常:
指的是程序运行中一切不正常的情况.
Java中将这些不正常分为两种:
1.Error: 错误,指的是,程序运行过程中出现了问题,但是程序自身无法解决
jvm自己出错了,内存不够用了.
Exception in thread "main" java.lang.StackOverflowError 栈溢出错误
2.狭义上的异常(Exception): 也是程序运行中出现了问题,但是可以通过异常处理机制代码进行解决.
解决后程序可以继续向后运行.
例如数组越界
......
对于一般的异常,出现后,程序会立即终止执行, 或者实现采用异常处理机制来进行处理
异常的体系
Throwable:(java异常体系中最大的类)
Error
许多的子类 不是我们本次学习重点
Exception
许多的子类
运行时异常 RunTimeException
检查异常/编译期异常在java中为什么有这么多的异常类, 只是把语法能够出现的某种问题对应的封装成了一个类.
一旦出现某类问题时,java虚拟机会抛出对应的问题的类.
异常处理
一般异常处理
try{
写可能会出现问题的代码
目前不确定哪些代码写在try中,没关系,可以将更多的代码放进来
}catch(具体的异常类型1 ){
捕获try中出现的对应的类型的异常
}catch(具体的异常类型2 ){
捕获try中出现的对应的类型的异常
}catch(Exception){
做什么?
不是将有问题的给处理好
1.可以向用户做出提示
2.为开发人员输出异常相关信息,方便调试
3.打印程序运行日志
}finally{
将一些最终必须要执行的代码写在此处
}
throws与throw
throws
在方法定义时,进行声明的,声明此方法可能会出现某种异常.
throw
在方法体内,用来抛出一个异常对象.
自定义异常
java语言中提供了许许多多的异常类,都是与语法相关的.
而实际的业务开发,有时,我们也需要在某种条件下以抛出异常对象的方式进行处理.
举个例子:判断分数:
所以,我们可以自定义异常类, 当不满足条件时,可以抛出此类的对象即可.