Lazy loaded image
异常处理
字数 2299阅读时长 6 分钟
2025-3-28
2025-3-28
author
type
Post
status
Published
date
Mar 28, 2025
slug
summary
tags
java基础知识
category
Java
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类使用
下一篇
面向对象下