目录
异常说明
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的
就是有的时候会产生在运行当中的错误
异常分为
检查性异常
最具代表的检查性异常是用户错误或问题引起的异常,这时程序程序无法遇见。
运行时异常
运行时异常是可能被程序员避免的一场,与检查性异常相反
运行时异常可以在编译时被忽略
错误
错误不是异常,而是脱离了程序员控制的问题,就是程序员写的代码有问题
体系结构
throwable这时是所有异常类的总和:检查异常(Error)和运行时异常(Exception)
但是我们只能捕获运行时异常:Exception
常见的异常类![](https://i-blog.csdnimg.cn/blog_migrate/f33967198b2dfb831470eaf4e2674e15.png)
异常语法
使用分为三种:往上抛、捕获、抛出
往上抛
就是当执行的时候有出现了异常,那么这个异常就会往上抛,交给调用者
捕获
就是程序出现异常的时候,我们不是往上跑,而是我们来自己解决这个异常
抛出
就是在某个时候,我们需要程序出现异常,从而来停止程序
注意:不管是往上抛,还是捕获,在使用异常类的时候,都不会对自己不包含的异常进行反应
语法
//往上抛,多个异常之间,可以使用“,”来进行分隔
方法头() throws 异常{
方法体
}
//实例
public void abc1() throws Exception,RuntimeException{
//方法体;
}
//捕获
try{
//可能会出异常的代码块
}catch(异常类 变量名){
//出现异常可能执行的代码
//变量名.异常方法();
}finally{
//在程序之前结束之前,一定会执行的代码体
}
//实例
public void abc2(){
try{
int sun=0;
//这里0不能作为除数会出现异常,catch捕获到异常,跳转到catch代码块中,
System.out.println(10/sun);
System.out.println("执行成功");
}catch(Exception E){
//在控制台打印控制信息
E.printStackTrace();
}finally{
System.out.println("程序执行结束");
}
}
//抛出
// 方式一:throw new 异常类()
// 方式二:throw new 异常类("自定义异常信息")
//实例
public void abc3(){
//throw new Exception ();
throw new Exception ("没有方法体");
}
注意
捕获语法有几种方式:try-catch、try-catch-finally、try-finally、
一个try可以写多个catch代码块类来捕获对应的异常,try-catch它之间可以互相的嵌套
如果出现的异常,比定义捕获的异常还要大,那么就会捕获不到异常
try-catch-finally执行流程
首先执行try里面的代码,如果出现了异常,并捕获到了那么就会跳转到catch代码块中,然后最后执行finally代码块,如果如果这时程序没有结束,那么就会继续执行try下面的语句 finally并非在最后执行,而是在程序结束之前一定会执行里面的代码块
异常对象的常用方法
String getMessage():返回异常消息的字符串
void PrintStackTrace():控制台打印异常消息
String toString():返回简略的异常信息
异常类
说明
有的时候有在java异常类当中没有我们需要的异常类的时候
就可以自定义异常类了
代码
继承现有的异常结构:RuntimeExceptiona(不用处理)、Exception(需要处理)
提供重载的构造器
public class 类名 extends Exception {
public 类名(){
}
public 类名(String message){
super(messsage)
}
}