Lazy loaded image
异常处理
字数 2299阅读时长 6 分钟
2025-3-28
2025-3-28
type
status
date
slug
summary
tags
category
icon
password

异常

异常介绍

概述 代码出现了不正常现象在java中异常都是一个类
notion image
notion image

异常出现过程

notion image

创建异常对象(了解)

创建异常对象,只是为了后面学习如何处理异常其他暂时没有任何意义
notion image

异常处理方法(重点)

异常处理方式-throws

格式 在方法参数和方法体之间位置上写 throw 异常意义 处理异常将异常往上抛
notion image
notion image

异常处理方式-throws多个异常

格式 throws 异常1,异常2如果throws 的多个异常之间有子父类继承关系,我们可以直接throws 父类异常如果不知道多个异常之间是否有子父类继承关系,我们可以直接throws Exception

异常处理方式-try...catch

格式try{ 可能出现异常代码 } catch(异常 对象名){ 处理异常代码 -> 将来开发中将异常信息保存到日志文件中 }

异常处理方式-多个catch

格式try{ 可能出现异常代码 } catch(异常 对象名){ 处理异常代码 -> 将来开发中将异常信息保存到日志文件中 }catch(异常 对象名){ 处理异常代码 -> 将来开发中将异常信息保存到日志文件中 } catch(异常 对象名){ 处理异常代码 -> 将来开发中将异常信息保存到日志文件中 }... 注意如果catch 有多个异常之间有子父继承关系,我们可以直接catch父类异常如果不知道多个异常之间是否有子父类继承关系,我们可以直接catch Exception

finally处理

finally使用

概述代表的不管是否触发了异常,都会执行代码块特殊情况 如果之前执行了System.exit(0) 终止当前正在执行java虚拟机使用都是配合try-catch使用try{ 可能出现异常代码 } catch(异常 对象名){ 处理异常代码 -> 将来开发中将异常信息保存到日志文件中 } finally { 不管是否有异常都会执行代码 }

finally使用场景

关闭资源 原因 对象没有使用,GC(垃圾回收器)回收,用来回收堆内存中的垃圾,释放内存但是有些对象GC回收不了,比如:连接对象(Connection),IO流对象,Socket对象,这些对象GC回收不了,就需要我们手动回收,手动关闭将来不能回收对象new完之后,后续操作不管是否操作成功,是否有异常,我们都需要手动关闭,此时我们就可以关闭资源代码放到finally中
notion image

抛异常时注意的事项

如果父类中方法抛了异常,那么子类重写之后是否要抛呢? 可抛可不抛如果父类中没有抛异常,那么子类重写之后是否要抛异常? 不要抛

try-catch和throws使用时机

如果出来异常之后,还想后续的代码正常执行,我们需要用try-catch如果方法之间是递进关系(调用),我们可以先throws,但是到了最后需要用try...catch做一个统一的异常处理
notion image
:warning:
  • 编译时期异常时必须要处理,不处理会爆红,没法往下写
    • throws
    • try-catch
  • 运行时期异常我们一般不处理,一旦运行时期异常,肯定是代码写的有问题,我们直接修改代码细节即可

自定义异常和打印异常信息

自定义异常

需求 键盘输入一个用户名,实现登录功能,如果登录失败,抛出LoginUserException使用 定义一个类如果继承Exception就是编译时期异常如果继承RuntimeException就是运行时期异常

打印异常信息三个方法

Throwable类中方法 String toString() 输出异常类型和设置异常信息String getMessage() 输出设置异常信息void printStackTrace() 打印异常信息是最全的:包括异常类型,信息,以及出现的行数等
 
上一篇
Object类使用
下一篇
面向对象下