Java
基础知识
01概述
02变量
03运算符
04程序控制语句
05数组
06面向对象编程
07代码练习
08重载
09作用域
10构造方法&构造器
11this
12包
13修饰符
14封装
15继承
16super
17覆盖&重写
18多态
19零钱通项目
20类变量&类方法
21抽象类
22接口
23内部类
24枚举
25泛型
26常用API
27lambda表达式
28正则表达式
29异常
30File&IO流
31日志技术
32多线程
33网络编程
-
+
首页
29异常
## 概述 > 什么是异常 异常表示程序出现的问题 - 异常是代码在编译或者执行的过程中可能出现的问题 > 异常的体系  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** ```java 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); } } } ``` ```java 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代表可以捕获一切异常 ```
毛林
2025年9月7日 12:13
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码