Java---异常

文章目录

    • 1. 异常概述
    • 2. try...catch
    • 3. Throwable成员方法
    • 4. 编译时异常和运行时异常区别
    • 5. 异常处理之throws
    • 6. 自定义异常
    • 7. throws和throw的区别


1. 异常概述

 1. 异常:就是程序中出现了不正常的情况。

 2. Error:严重问题,不需要处理。Exception:称为异常类,它表示程序本身可以处理的问题。RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码。非RuntimeException:编译期就必须处理的,否则程序不能通过编译,就更不能运行了。

在这里插入图片描述

 3. JVM处理异常的默认方案:(1) 把异常的名称、异常的原因以及异常出现的位置等信息输出在了控制台。 (2) 程序终止运行。

2. try…catch

 1. 如果程序出现了问题,我们需要自己处理,有两种方案:(1) try...catch。 (2) throws

 2. try...catch执行流程:程序从try里面的代码开始执行;出现异常时会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统;当Java运行时系统接收到异常对象时,会到catch中去找匹配的异常类,找到后进行异常的处理;执行完毕之后,程序还可以继续往下执行。
在这里插入图片描述

 3. 代码块举例:

public class Demo {public static void main(String[] args) {System.out.println("开始");method();System.out.println("结束");}public static void method() {try {int[] arr = {1, 2, 3};System.out.println(arr[3]);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("你访问的数组的索引不存在");}}
}

在这里插入图片描述

public class Demo {public static void main(String[] args) {System.out.println("开始");method();System.out.println("结束");}public static void method() {try {int[] arr = {1, 2, 3};System.out.println(arr[3]);} catch (ArrayIndexOutOfBoundsException e) {e.printStackTrace();}}
}

在这里插入图片描述

3. Throwable成员方法

方法名说明
public String getMessage()返回此throwable的详细信息字符串
public String toString()返回此可抛出的简短描述
public void printStackTrace()把异常的错误信息输出在控制台
public class Demo {public static void main(String[] args) {System.out.println("开始");method();System.out.println("结束");}public static void method() {try {int[] arr = {1, 2, 3};System.out.println(arr[3]);} catch (ArrayIndexOutOfBoundsException e) {//e.printStackTrace();System.out.println(e.getMessage()); //输出:3System.out.println(e.toString()); //输出:java.lang.ArrayIndexOutOfBoundsException: 3}}
}

4. 编译时异常和运行时异常区别

 Java的异常分为两大类:编译时异常和运行时异常,也称为受检异常和非受检异常。所有的RumtimeException类及其子类被称为运行时异常,其他的异常都是编译时异常。

  • 编译时异常:必须显示处理,否则程序就会报错,无法通过编译。
  • 运行时异常:无须显示处理,也可以和编译异常时一样处理。

5. 异常处理之throws

 1. 虽然我们通过try...catch...可以对异常进行处理,但是并不是所有的情况我们都有权限进行异常的处理。也就是说,有时候可能出现的异常我们处理不了。针对这种情况,Java提供了throws的处理方案。

 2. 格式:throws 异常类名。注意:这个格式是跟在方法的括号后面的。

 3. 代码块举例。可以看到抛出异常后不会继续往下处理。

public class Demo {public static void main(String[] args) {System.out.println("开始");method();System.out.println("结束");}public static void method() throws ArrayIndexOutOfBoundsException {int[] arr = {1, 2, 3};System.out.println(arr[3]);}
}

在这里插入图片描述

6. 自定义异常

 1. 格式和范例:

在这里插入图片描述

在这里插入图片描述

 2. 代码块举例:

public class ScoreException extends Exception{public ScoreException() {};public ScoreException(String message){super(message);}
}public class Teacher {public void CheckScore(int score) throws ScoreException{if(score<0||score>100)throw new ScoreException("你给的分数有误,应该在0-100之间");elseSystem.out.println("分数正常");}
}import java.util.Scanner;
public class Demo {public static void main(String[] args) {Scanner sc=new Scanner(System.in);System.out.println("请输入分数:");int score=sc.nextInt();Teacher t=new Teacher();try {t.CheckScore(score);} catch (ScoreException e) {e.printStackTrace();}}}

在这里插入图片描述

7. throws和throw的区别

throwsthrow
用在方法声明后面,跟的是异常类名用在方法体内,跟的是异常对象名
表示抛出异常,由该方法的调用者来处理表示抛出异常,由方法体内的语句处理
表示出现异常的一种可能性,并不一定会发生这些异常执行throw一定抛出了某种异常

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

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

相关文章

【FMC140】 基于VITA57.4标准的双通道5.2GSPS(或单通道10.4GSPS)射频采样FMC+子卡模块

板卡概述 FMC140是一款具有缓冲模拟输入的低功耗、12位、双通道&#xff08;5.2GSPS/通道&#xff09;、单通道10.4GSPS、射频采样ADC模块&#xff0c;该板卡为FMC标准&#xff0c;符合VITA57.1规范&#xff0c;该模块可以作为一个理想的IO单元耦合至FPGA前端&#xff0c;8通道…

Raspberry Pi 2, 2 of n - Pi 作为 IoT 消息代理

目录 介绍 环境 先决条件 - 设置静态 IP 地址 安装 Mosquitto 启动/停止 Mosquitto 配置先决条件 - 安装 mqtt_spy 配置 Mosquitto 配置 Mosquitto - 无安全性 测试 Mosquitto 配置 - 无安全性 配置 Mosquitto - 使用密码身份验证 Mosquitto 测试 - 带密码验证 概括 介绍 在本文…

3.pytorch加载数据

1. Dataset 所谓Dataset&#xff0c;其实就是一个负责处理索引(index)到样本(sample)映射的一个类(class)。 torch.utils.data.Dataset 是一个表示数据集的抽象类。任何自定义的数据集都需要继承这个类并覆写相关方法。 Map式数据集 一个Map式的数据集必须要重写getitem(self…

JVM Optimization Learning(五)

一、JVM Optimization 1、G1 G1官网说明&#xff1a;Garbage First Garbage Collector Tuning The Garbage First Garbage Collector (G1 GC) is the low-pause, server-style generational garbage collector for Java HotSpot VM. The G1 GC uses concurrent and paralle…

数据结构之二叉堆解决问题

二叉堆 需求分析 Top K 问题 什么是 Top K 问题&#xff1f; 从海量数据中找出前 K 个数据。 比如&#xff1a;从 100 万个整数中找出最大的 100 个整数Top K 问题的解法之一&#xff1a;可以用数据结构 “堆” 来解决。 堆 堆是一种【完全二叉树】&#xff0c;可以分为【…

sparkc程序idea调试提示内存不足

报错如下&#xff1a; Exception in thread "main" java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200. Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configuration. 测…

【Java 基础】19 多线程基础

文章目录 进程和线程进程&#xff08;Process&#xff09;线程&#xff08;Thread&#xff09; 线程的创建1&#xff09;继承 Thread 类2&#xff09;实现 Runnable 接口3&#xff09;使用 Lambda 表达式4&#xff09;总结 线程的状态状态的分类状态间转换 多线程是一种 同时执…

什么是网站?

这篇文章是我学习网站开发&#xff0c;阶段性总结出来的。可以帮助你 通俗易懂 地更加深刻理解网站的这个玩意。 一&#xff0c;网站和网页的区别&#xff1f; 网站是由一个个网页组成。我们在浏览器上面看到的每一个页面就是网页&#xff0c;这些 相关的 网页组成一个网站。…

用python删除指定目录下带某个字符串的图片

前言&#xff1a; 在文件处理中&#xff0c;有时我们需要批量删除指定文件夹中的特定类型文件。如果文件数量非常庞大&#xff0c;手动删除会非常麻烦&#xff0c;所有可以用 Python 编写一个简单而高效的脚本&#xff0c;自动执行重复性的任务&#xff0c;从而节省时间和精力&…

一起学docker系列之十八Docker可视化工具 Portainer:简介与安装

目录 前言1 简介2 安装过程2.1 创建docker容器数据卷2.2 构建运行protainer容器 3 Portainer 软件详细说明与界面导览3.1 查看本地Docker情况3.2 操作功能3.3 创建容器3.4 部署容器 4 Portainer的优势结语参考地址 前言 Docker作为容器化解决方案的热门工具&#xff0c;其可视…

自媒体原创改写工具,自媒体首发改写软件

自媒体平台已成为许多创作者表达观点、分享知识和积累影响力的关键渠道。创作是需要技巧和经验的。本文将分享一些自媒体文章改写技巧&#xff0c;并推荐一系列优秀的自媒体文章改写工具&#xff0c;帮助您提升创作效率&#xff0c;创作出更优秀的文章。 自媒体文章改写技巧 …

深度学习在工业自动化领域的简析

原创 | 文 BFT机器人 在机器视觉和工业自动化领域&#xff0c;很少有比“深度学习”更引人注目的词汇。大约七年前左右&#xff0c;这个词随着一波庞大的营销炒作而出现&#xff0c;附带着“革命性”和“颠覆性”等形容词。几年后&#xff0c;尘埃落定&#xff0c;深度学习在自…