Java 基础--- 异常 Exception

2023-10-27

Exception 类型

  • 所有的异常都从 java.lang.Throwable 继承
  • Exception class可以被分为三种类型 system errors, exception, runtime exceptions
  • Error: There is little you can do beyond notifying the user and trying to terminate the program gracefully. Example: LinkageError, VirtualMachineError
  • Exceptions: describes errors caused by your program and by external circumstances. Example: ClassNotFoundException, IOException,
  • Runtime Exceptions: describes programming errors, such as bad casting, accessing an out-of-bounds array, and numeric errors. Example: NullPointerException, IndexOutOfBoundsException
    在这里插入图片描述
  • Unchecked Exception: 不用被强制的显式的抛出或者捕获, 包括 runtime exceptions, error 和它们的子类
    In most cases, unchecked exceptions reflect programming logic errors that are unrecoverable. For example, NullPointerException
  • Checked Exception: 必须强制的被显式的抛出或者捕获(也就是使用try catch处理),其余的exception都为checked exception

使用Exception

声明 Exception

public void myMethod() throws Exception1
public void myMethod() throws Exception1, Exception2, ..., ExceptionN

抛出Exception

 throw new IllegalArgumentException("Wrong Argument");
IllegalArgumentException ex = new IllegalArgumentException("Wrong Argument");
throw ex;
  • 注意throw是抛出异常的时候用, throws是声明异常的时候用

Catch Exception

在这里插入图片描述

  • Note: 在method2中,如果exception不是ex3,没有被catch住,则程序直接跳会method1,statment5和statment6都不会执行。

Throwable Class

在这里插入图片描述
在这里插入图片描述
使用 Throwable
在这里插入图片描述

Example

在这里插入图片描述
在这里插入图片描述

finally 关键字

  • 不管有没有exception发生, finally总会被执行
  • 如果try中出现exception则程序不会回到try中, 执行完finally之后会继续往下执行
  • 即使在finally之前有return, finally里的代码还是会被执行

执行顺序 try - catch -finally

在这里插入图片描述

(假设try里有return)

  • 如果没有exception发生: statement4会被执行, statement 5不会被执行
  • 如果有exception 并且是 Exception 1, 则4和5都会被执行
  • 如果有exception 并且不是 Exception 1, 则4会被执行, 然后程序报错

(假设try里没有return)

  • 如果没有exception发生: statement4, statement 5都会被执行
  • 如果有exception 并且是 Exception 1, 则4和5都会被执行
  • 如果有exception 并且不是 Exception 1, 则4会被执行, 然后程序报错
  • 没有exception: try和finally里都有return: 会使用finally里的return
    在这里插入图片描述
  • 有exception, try,catch, finally里都有return: 会执行finally里的return
    在这里插入图片描述

总结:

  • 如果finally里有return则一定会执行finally里的return
  • 如果finally里没有return
  • 没有exception的情况会执行try里的return, 如果try里没有return会继续finally之后的代码执行
  • 有exception的情况会执行catch里的return,如果catch里没有return会继续finally之后的代码执行

在finally中修改变量

  • finally相当于一个方法, 变量相当于参数, 所以遵循java值传递的规则
  • 下图中finally没有影响tryli的变量
    在这里插入图片描述
  • 以下代码中finally中的put方法起作用了, 但是map = null没有起作用
    在这里插入图片描述

Chained Exception

  • Sometimes, you may need to throw a new exception (with additional information) along with the original exception. This is called chained exceptions.
    在这里插入图片描述

自定义Exception

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 基础--- 异常 Exception 的相关文章

随机推荐

  • 基础练习 矩阵乘法

    问题描述 给定一个N阶矩阵A 输出A的M次幂 M是非负整数 例如 A 1 2 3 4 A的2次幂 7 10 15 22 输入格式 第一行是一个正整数N M 1 lt N lt 30 0 lt M lt 5 表示矩阵A的阶数和要求的幂数 接下
  • AutoMapper基本使用

    导包 AutoMapper AutoMapper Extensions Microsoft DependencyInjection 假如需要将Student映射为StudentCopy namespace WebApplication14
  • 国内比较快的DNS服务器IP汇总

    DNS是什么 DNS Domain Name System 域名系统 简单的说 就是把我们输入的网站域名翻译成IP地址的系统 比如我们想访问百度 我们会在网页里键入www baidu com 但是电脑不会理解这串字符的含义 于是就把这串字符
  • ElementUI浅尝辄止33:Form 表单

    Form 表单 日常业务中很常见 由输入框 选择器 单选框 多选框等控件组成 用以收集 校验 提交数据 常见于表单请求 登录 数据校验等业务操作中 1 如何使用 包括各种表单项 比如输入框 选择器 开关 单选框 多选框等 在 Form 组件
  • 数据结构与算法(六):图结构

    一 基本概念 二 图的存储结构 1 邻接矩阵 2 邻接表 3 十字链表 三 图的遍历 1 深度优先遍历 2 广度优先遍历 四 最小生成树 1 Prim算法 2 Kruskal算法 五 最短路径 1 Dijkstra算法 图是一种比线性表和树
  • 15:00面试,15:06就出来了,问的问题有点变态。。。

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到8月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降40 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • uniapp 发布前隐私条款、用户协议等配置

    隐私类型 1 android隐私与政策提示框 2 网页版隐私条款 android ios都会用到 3 app内部隐私条款 一 android隐私与政策提示框 根据工业和信息化部关于开展APP侵害用户权益专项整治要求 App提交到应用市场必须
  • CVE-2021-41773&&CVE-2021-42013复现

    CVE 2021 41773 漏洞原理 Apache HTTP Server 是 Apache 基础开放的流行的 HTTP 服务器 在其 2 4 49 版本中 引入了一个路径体验 满足下面两个条件的 Apache 服务器将受到影响 版本等于
  • 汇编寄存器介绍

    1 通用寄存器 名称 全称 32位 16位 8位 编号 功能 rax 累加器 Accumulator eax ax ah al 0 0000 返回值 rcx 计数器 Count Register ecx cx ch cl 1 0001 第二
  • pytorch自带的模型剪枝工具prune的使用

    torch nn utils prune可以对模型进行剪枝 官方指导如下 https pytorch org tutorials intermediate pruning tutorial html 直接上代码 首先建立模型网络 impor
  • 游标应用例子

    drop procedure if exists test create procedure test IN MGR varchar 10 IN ACCESST DATETIME begin declare no more record I
  • 【MCS-51】时钟电路和复位

    单片机的处理器内部具有众多模块 但是要想协调这些模块统一工作并不是一件易事 为了确保各部分能够统一有序工作 因为单片机已经是一个同步时序电路 所以要想让它内部能够有序工作 我们需要从外部输入一个时钟信号 目录 振荡方式 内部振荡 外部振荡
  • Spring源码:Bean的实例化及初始化过程

    1 概述 在前面的文章中 我们把 refresh 中 obtainFreshBeanFactory invokeBeanFactoryPostProcessors 方法都梳理了一遍 其中还有一个 registerBeanPostProces
  • (已解决)STM32报错error: L6236E: No section matches selector - no section to be FIRST/LAST.

    前言 在最近自学32过程中使用另一台电脑开发时出现报错 error L6236E No section matches selector no section to be FIRST LAST 在原本电脑开发时并未遇到 特地查阅资料解决此问
  • Web3到底是什么?

    本文原作者 Max Parasol 编译 黑色马里奥 Web3 加密货币持有者喜欢称之为的 Web 3 0 它是一个只有非常模糊定义的热门流行语 每个人都浅显的认为它是互联网基于区块链进一步发展的相关事物 但除此之外 它到底是什么 然而 围
  • linxu下CUDA静态库-下

    本机系统环境 lucas lucas wellcom usr local cuda lib64 cat proc version Linux version 3 13 0 40 generic buildd comet gcc versio
  • Java多线程-线程内如何抛出异常?

    设置setUncaughtExceptionHandler就能将线程内的异常抛出 否则只会存放在日志或者什么的 public class ThreadThrowExcption public static void main String
  • 自学python能学成吗-大家觉得自学python多久能学会?

    作为一名从业多年的IT人 同时也是一名教育工作者 我来回答一下这个问题 首先 学习Python语言确实并不困难 即使对于没有任何计算机基础的人来说 只要有一个系统的学习过程 大部分人都能够掌握Python的基本语法 但是要想在一周之内掌握P
  • 去除chrome网站https的安全检测

    chrome net internals hsts 访问该网址 把要禁止检测的网址放在下面 转载于 https www cnblogs com xiaozhumaopao p 11005282 html
  • Java 基础--- 异常 Exception

    Java 基础 异常 Exception Exception 类型 使用Exception Throwable Class Example finally 关键字 Chained Exception 自定义Exception Excepti