点我
异常
概述
什么是异常
异常表示程序出现的问题
- 异常是代码在编译或者执行的过程中可能出现的问题
异常的体系
Error:表示系统级别的错误
Exception:异常,表示程序可能出现了某种问题,所以,程序员通常会用exception以及它们的子类来封装程序出现的问题
异常分类
- 运行时的异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时才会出现的异常,例如:数组索引越界异常
- 编译时异常:编译阶段就会出现的错误提醒,例如:日期解析异常
抛出&捕获异常
抛出异常(throws)
- 在方法名前面使用throws关键字,可以将方法内部出现的异常抛出去给调用者处理
方法名 throws 异常1,异常2,...{
......
}
捕获异常(try...catch)
- 直接捕获程序出现的异常
try{
监视可能出现异常的代码
}catch(异常类型1 变量){
处理异常的代码
}catch(异常类型2 变量){
处理异常的代码
}
异常的作用
- 异常是用来查询系统BUG的关键参考信息
- 异常可以作为方法内部的一种特殊返回值,以便通知上层调用者底层的执行情况
自定义异常
Java无法为这个世界上全部的问题都提供异常类来代表, 如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类
自定义异常的种类
自定义运行时异常
- 定义一个异常类继承RuntimeException
- 重写构造器
- 通过throw new 异常类(xxx)来创建异常对象并抛出
注意:编译阶段不报错,提醒不强烈,运行时才可能出现!!
自定义编译时异常
- 定义一个异常类继承Exception
- 重写构造器
- 通过throw new 异常类(xxx)来创建异常对象并抛出
注意:编译阶段就报错,提醒更加强烈
demo
package com.xbxaq.exception_;
public class Test {
public static void main(String[] args) {
try {
saveAge(179);
} catch (Exception e) {
e.printStackTrace();
System.out.println("BUG");
}
}
public static void saveAge(int age) throws AgeRuntimeException {
if(age > 0 && age < 150){
System.out.println("年龄成功被保存");
}else {
throw new AgeRuntimeException("/age is illegal,your age is " + age);
}
}
}
package com.xbxaq.exception_;
public class AgeRuntimeException extends Exception{
public AgeRuntimeException() {
}
public AgeRuntimeException(String message) {
super(message);
}
}
异常的常见处理方式
常见方式
- 捕获异常,记录异常并响应合适的信息给用户
- 捕获异常,尝试重新修复
在开发中异常的常见处理方式是:底层的异常抛出去给最外层,最外层集中捕获处理
抛出异常
在方法名上使用throws关键字,可以将方法内部出现的异常抛出去给调用者处理
方法名 throws 异常1,异常2,...{
......
}
例如:
方法名 throws Exception{......}
// Exception代表可以捕获一切异常
捕获异常(try...catch)
- 直接捕获程序出现的异常
try{
监视可能出现异常的代码
}catch(异常类型1 变量){
处理异常的代码
}catch(异常类型2 变量){
处理异常的代码
}
例如:
try{
// 可能出现异常的代码!
}catch (Exception e){
e.printStackTrace(); // 直接打印异常对象的信息}
// Exception代表可以捕获一切异常
分类:
JAVA
版权申明
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论