Java进阶之旅第八天

Java进阶之旅第八天

文章目录

  • Java进阶之旅第八天
    • 异常
      • 作用
      • 分类
        • 编译时异常
        • 运行时异常
      • 异常的处理方式
        • 默认的处理方式
        • 自己处理(捕获异常)
      • 异常的常见方法
        • Throwable 的成员方法
          • 代码
          • 结果
      • 异常的抛出处理
        • throws和throw
      • 自定义异常

异常

作用

  • 自己写的代码在运行过程中发生某种错误,抛出的错误进行处理.使得自己能快速甄别错误信息
  • 对可能出现的问题进行封装,查询bug的关键参考信息

分类

编译时异常
  • 1.继承自 Exception 类,但不是继承自 RuntimeException 类。
  • 2.在代码中必须显式地处理或声明抛出编译时异常。
  • 3.编译时异常发生的地方必须处理该异常,否则代码无法通过编译。
  • 4.编译时异常通常表示外部环境或资源的错误或异常情况,需要在代码中明确处理,以保证程序的健壮性和可靠性。
运行时异常
  • 继承自 RuntimeException 类。
  • 在代码中可以选择性地处理或声明抛出运行时异常。
  • 运行时异常可以不被显式地捕获,也不需要在方法签名中声明抛出。
  • 运行时异常通常表示程序逻辑的错误或异常情况,如空指针异常、数组越界异常等。
  • 运行时异常一般由程序员编码错误导致,需要通过代码的调试和修复来解决。

异常的处理方式

默认的处理方式
  • 1.把异常的名称,异常的原因以及异常出现的位置等信息输出在控制台
  • 2.程序停止执行,下面的代码不会再执行了
  • 代码: System.out.println(2/0);
  • 错误: Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:5)
自己处理(捕获异常)
  • 语法:try{可能出现异常的代码块}catch(异常类名 变量名){异常的处理代码}
  • 目的: 当代码出现异常时,可以让程序继续往下执行
  • 代码:
        try {System.out.println(2/0);}catch(ArithmeticException e){System.out.println("算术异常!");}System.out.println(("程序没有被停止"));
  • 结果:
算术异常!
程序没有被停止
  • 细节:
    • 1.只有出现异常才会执行catch中的代码
    • 2.在出现多个问题时,可以写过个catch进行捕获处理
    • 3.当出现错误之后,会立即跳转到对应的catch中,并不再运行错误语句之后的代码
    • 4.如果要写父类接收错误(Exception),需要将其写到最后一个catch中
    • 5.在JDK7之后,我们可以在catch中同时捕获多个异常,中间用|隔开,在过个错误的处理方案一致时可以使用,例子: catch(ArithmeticException | ArrayIndexOutOfBoundsException e){}
    • 6.代码中遇到的问题没有catch处理,会使用默认方式处理

异常的常见方法

Throwable 的成员方法
方法名说明
public String getMessage()返回此throwable的详细消息字符串
public String toString()返回此可抛出的剪短描述
public void printStackTrace()(常用把异常的错误信息输出在控制台(不会结束程序
代码
        try {System.out.println(2/0);}catch(ArithmeticException e){System.out.println(e.getMessage());System.out.println(e.toString());e.printStackTrace();}System.out.println(("程序没有被停止"));
结果
/ by zero
java.lang.ArithmeticException: / by zero
程序没有被停止
java.lang.ArithmeticException: / by zeroat Main.main(Main.java:7)

异常的抛出处理

throws和throw
  • throws
    • 注意: throws写在方法定义处,表示声明一个异常,告诉调用者,使用本方法可能会有哪些异常
    • 写法: public void 方法名() throws 异常类名1,异常类名2...{...}
    • 编译时的异常: 必须要写,运行时的异常: 可以不写
  • throw
    • 注意: 写在方法内,结束方法,手动抛出异常对象,交给调用者方法中下面的代码不再执行
    • 写法: public void 方法名() {throw new NullPointerException();}

自定义异常

  • 步骤

    • 1.定义异常类(起名字技巧: 异常名+Exception)
    • 2.写继承关系(编译时: Exception,运行时: RuntimeException)
    • 3.空参构造/有参构造(继承之后快捷键Alt+Insert,可以选择构造函数,重写前两个即可)
  • 代码

public class NameException extends RuntimeException{public NameException() {}public NameException(String message) {super(message);}
}
  • 调用: 正常调用即可.例如: throw new NameException()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/645385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wayland(xdg_wm_base) + egl + opengles 纹理贴图实例

文章目录 前言一、纹理贴图1. 纹理贴图介绍2. 使用opengles 实现纹理贴图的主要步骤二、代码实例1. egl_wayland_texture.c2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c3. 编译4. 运行总结前言 本文主要介绍如何在一个wayland client 里面使用 egl + opengles 实现…

[极客大挑战 2019]BabySQL1

发现union select被过滤了,双写绕过 or、from被过滤 where被过滤 在b4bysql中找到flag

架构师之路(十四)计算机网络(网络层)

前置知识(了解):计算机基础。 作为架构师,我们所设计的系统很少为单机系统,因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 网络层提供主机…

探索Gin框架:快速构建高性能的Golang Web应用

前言 Gin框架是一个轻量级的Web框架,基于Go语言开发,旨在提供高性能和简洁的API。它具有快速的路由和中间件支持,使得构建Web应用变得更加简单和高效。无论是构建小型的API服务还是大型的Web应用,Gin框架都能够满足你的需求。 无论…

go api(get post传参,数据库,redis) 测试

介绍:分别测试get请求,post请求,请求链接数据库,以及redis操作。 1.api代码 package mainimport (_ "database/sql""encoding/json""github.com/gin-gonic/gin""go-test/com.zs/database&quo…

[BSidesCF 2020]Had a bad day

先看url&#xff0c;发现可能有注入 http://655c742e-b427-485c-9e15-20a1e7ef1717.node5.buuoj.cn:81/index.php?categorywoofers 试试能不能查看index.php直接?categoryindex.php不行&#xff0c;试试伪协议 把.php去掉试试 base64解码 <?php$file $_GET[category];…

Vue3+TS+dhtmlx-gantt实现甘特图

实现样式 因为只做展示&#xff0c;所以实现很简单 实现功能 自定义列头增加斑马线&#xff0c;实际结束时间&#xff08;自定义实现&#xff09;自定义进度展示&#xff0c;根据层级让进度背景颜色变浅marker标记今天自定义提示框内容 实现 import { gantt } from "d…

STM32F407移植OpenHarmony笔记1

参考文档&#xff1a; OpenAtom OpenHarmonywidthdevice-width,initial-scale1.0https://docs.openharmony.cn/pages/v3.2/zh-cn/device-dev/get-code/gettools-acquire.md/ 搭建环境 安装linux系统: Ubuntu 22.04.2 LTS (GNU/Linux 5.15.0-91-generic x86_64) 下载源代码&a…

如何在转接的NVME 固态盘上安装WIN 系统并引导启动

问题&#xff1a; 家里的台式机一直挂着一块128G的SSD固态盘&#xff0c;由于家里自己建了NAS存储&#xff0c;所以基本数据都在NAS里&#xff0c;台式机就没有挂机械盘了&#xff0c;但是最近台式机空间被系统侵蚀&#xff0c;显然就不够用了&#xff0c;除了清理系统&#xf…

bash 5.2中文修订4

Compound Commands 复合命令 复合命令是 shell 编程语言的结构。每个构造都以保留字或控制运算符开始&#xff0c;并以相应的保留字或运算符终止。与复合命令关联的任何重定向&#xff08;请参阅 Redirections &#xff09;都适用于该复合命令中的所有命令&#xff0c;除非显式…

harmonyOS app 开发环境配置流程

1.安装DevEco Studio&#xff0c;注意nodejs版本&#xff0c;安装过程中有提示&#xff0c;添加hdc到系统环境变量中&#xff0c;用于调用hdc命令 2.开启真机设备的开发人员选项&#xff0c;以及开启5555端口&#xff08;需要连接usb线&#xff09; https://developer.harmonyo…

vue3使用AntV G6 (图可视化引擎)历程[二]

上期回顾&#xff1a;历程[一]描述了基本的树状图的绘制&#xff0c;默认节点类型defaultNode中的type是circle,下面这篇描述的是节点抽离自定义节点并做数据静态渲染。 官网地址&#xff1a;https://g6-next.antv.antgroup.com/manual/introduction 一、案例效果 二、自定义节…

正则表达式元字符-详细说明

字符 说明 \ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如&#xff0c;"n"匹配字符"n"。"\n"匹配换行符。序列"\\\\"匹配"\\"&#xff0c;"\\("匹配"("。 ^ 匹配输入字符串…

编写Bash脚本程序从记录文件中提取history命令的优化,再介绍linux bash语法和结构

目 录 一、引言 二、脚本代码实现 三、bash语法和结构 &#xff08;一&#xff09;基本语法 1、脚本开始与结束 2、注释 3、变量 4、数据类型 5、控制结构 6、循环控制 7、函数 8、算术运算 9、算术操作符和逻辑操作符 &#xff08;二&#xff09;命令相关…

c++文件操作 (1) -- 读写文件

目录 为什么使用文件操作 文件输入流和输出流 -- 相对于内存而言 文件操作 1. 文件操作常用类以及头文件 2. 文件输入流(写文件操作) 1. 写文本文件 1&#xff09;文件操作是使用对象来实现的 2&#xff09;文件输出 3&#xff09;打开文件 open函数 &#xff…

UDF学习(一)

1.1什么是UDF&#xff1f; 用户自定义函数&#xff0c;可以动态的连接到fluent求解器上来提高求解器性能。用户自定义函数用C语言编写&#xff0c;使用DEFINE宏来定义。可以使用标准C语言的库函数&#xff0c;也可以使用fluent Inc.提供的预定义宏&#xff0c;通过这些预定义宏…

使用CSS 或 SASS 实现主题背景切换效果

目录 &#x1f389;应用背景 &#x1f389;分析实现思路 &#x1f389;CSS实现主题切换 &#x1f389;SCSS实现主题切换 &#x1f389;结语 &#x1f389;应用背景 现在的主流网站中&#xff0c;无论是一些技术文档获取官网&#xff0c;都存在着使用一个switch按钮实现主题…

Nginx与keepalived实现集群

提醒一下&#xff1a;下面实例讲解是在mac虚拟机里的Ubuntu系统演示的&#xff1b; Nginx与keepalived实现集群实现的效果 两台服务器都安装Nginx与keepalived&#xff1a; mater服务器的ip(192.168.200.2) backup服务器的ip(192.168.200.4) 将 mater服务器Nginx与keepalived都…

【DG 特长生2019】模拟赛赛后总结(2024.1.24)

打了330pt,订正后350pt T1 签到 T2 dfs剪枝&#xff08;虽然我写挂了&#xff09; T3 NOIP原题 T4 floyd 主要是想分享一下T4。 写了一种基于floyd的做法。 感觉好像和大部分人的写法不太一样。 因为看到大小关系&#xff0c;我就想到了传递性。 floyd是可以维护传递…

Unity中URP下获取每一个额外灯数据

文章目录 前言一、我们先来看一下 SimpleLit 中的调用二、获取额外灯索引1、非移动平台2、非GLES平台3、大多数平台 三、获取额外灯数据 前言 在上一篇文章中&#xff0c;我们知道了URP下是怎么获取额外灯数量的。 Unity中URP下获取额外灯数量 在这篇文章中&#xff0c;我们…