异常常见形式与解决
异常就是用来描述代码中出现的问题
就是程序出现了不正常的情况.程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常终止.
注意
:语法错误不算异常体系中
异常
概述
异常就是程序出现了不正常的情况,当代码中出现了异常,就会在这里创建一个异常对象
体系
thorwable:
(1).Error为严重错误,硬件方面的,不需要我们处理
(2).Exception 异常(编译时期异常/受检异常)
RuntimeException异常为运行时异常(非受检异常)
除RuntimeException之外的异常为编译时异常
编译时异常,是在编译成class文件时必须要处理的异常,也称作受检异常
运行时异常,在编译成class文件不需要处理,在运行字节码文件时可能出现的异常.也称作非受检异常
jvm虚拟机默认处理方式
(1).将异常信息以红色字体展示在控制台上
提示程序出问题的原因和问题
(2).停止程序运行
手动处理
(1).throws 当我们不用自己处理,或自己无法处理的时候,可以将异常的处理权交给调用者处理;
格式:throws 异常类名;
注意:这个格式是写在方法的定义处,表示声明一个异常
编译时异常因为在编译时就会检查,所以必须要写在方法后面显示声明 运行时异常因为在运行时才会发生,所以在方法后面可以不写
(2).throw 在方法内,手动将异常抛出,有方法体中的语句处理,下面的程序就不执行了
格式:throw new 异常();
注意:这个格式在方法内,表示当前代码手动抛出一个异常,下面的代码就不会在执行了
使用方法:
1.在方法中,当传递的参数有误,没有继续运行下去的意义了,则采取抛出处理,表示让该方法结束运行
2.告诉调用者出现了问题
(3).try{}catch(捕捉异常的类型){}
由于我们自身的问题而引发的异常,我们可以使用这种方式处理,一旦处理之后,程序可以继续运行
格式:try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常处理的代码块;
}
注意事项:throw和throws的区别
throw用在方法体中,用于真正的抛出一个异常对象,而throws用在方法声明上,用于"提醒"调用者,我们方法内部有可能会出现什么问题;
异常常见方法
getMessage():返回throwable的详细消息字符串
toString():返回可抛出的简短描述
printStackTrace():把异常的错误信息打印到控制台
自定义异常
意义
起名字为了异常信息和调用者见名知意
步骤
(1).继承Java已经提供的异常类;一般使用RuntimeException
(2).写上构造方法即可
定义异常类,写继承关系,写空参构造,写有参构造