木舟0基础学习Java的第十六天(异常,分类,自定义异常,注意事项)

异常

异常概述:异常是Java程序运行过程中出现的错误

异常分类:API查找Throwable

1.Error(服务器宕机,数据库崩溃等)

2.Exception C(异常的继承体系)API查RuntimeException

运行时异常:一般是程序员的错误异常可以让我们发现错误并修改

编译时异常:Exception下除了RuntimeException其他都是编译时异常 在写代码时就要处理掉 不然编译不通过

异常处理的两种方式

1.try catch(抓取)

   try catch finally

2.throws(抛出)  //直接抛给Jvm java虚拟机执行 缺点:程序会终止

try...catch处理异常的基本格式 try…catch…finally

通过 try{}carch(){} 把问题处理后程序会继续执行

 public static void main(String[] args) {try{int a=10;System.out.println(a/0);}catch(ArithmeticException e){//ArithmeticException类 中重写了Object中的toString()e=new ArithmeticException("不能除0");System.out.println(e);}finally{//这里的代码不管有没有抓取异常都会执行}//通过 try{}carch(){} 把问题处理后程序会继续执行System.out.println("出现异常行以下的程序-----------------------------------------");}

开发常用:

异常 名字.printStackTrace();

//打印堆栈信息 输出异常名字和问题的原因 以及问题出现在某个类中某一行

例:java.lang.ArrayIndexOutOfBoundsException: 7
    at com.muzhou.lesson.exception.Demo02.main(Demo02.java:8) //异常代码位置

类中抛异常案例:

public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) throws Exception {if(age>0&&age<=120){this.age = age;}else{//抛出异常/* try{throw new Exception();}catch( Exception e){e=new Exception("年龄非法");System.out.println(e);}*/throw new Exception();//不处理异常 再次往方法上抛出 使用场景:在数据库}}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}
}
      Person p=new Person();p.setName("张三");try{p.setAge(130);//调用者被告知这个方法中有异常抛出 传值调用要注意 让调用者来处理}catch(Exception e){e.printStackTrace();}System.out.println(p);}
    public void setAge(int age)  {if(age>0&&age<=120){this.age = age;}else{throw new RuntimeException("年龄非法");//运行异常 不需要手动处理 由jvm默认的异常处理机制处理}}
throw和throws的区别

throw:在功能方法内部出现某种情况 程序不能继续运行 需要跳转时 就用throw把异常对象抛出

1.用在方法体内 跟的是异常对象

2.只能抛出一个异常对象名

3.表示抛出异常 由方法体内的语句处理

throws:

1.用在方法声明后面 跟的是异常类名

2.可以根多个异常类名 用逗号隔开

3.表示抛出异常 由该方法的调用者处理

自定义异常:

自定义异常是给了异常名字 可以更好的识别异常解决问题

自定义异常继承Exception 继承自RuntimeException

public class AgeException extends Exception{//自定义编译异常public AgeException() {super();}public AgeException(String s) {super(s);}
}
public class AgeRuntimeException extends RuntimeException{//自定义运行时异常public AgeRuntimeException() {super();}public AgeRuntimeException(String s) {super(s);}
}

注意:

子类继承父类 不能抛出>父类的异常 只能抛出<=父类的异常

父类没有抛异常 子类不允许抛异常

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

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

相关文章

算法力扣刷题记录 三十七【二叉树层序遍历】

前言 二叉树递归遍历和二叉树迭代遍历 实现的前中后序遍历都归类深度搜索&#xff1b; 广度搜索如何实现&#xff1f;一层结束&#xff0c;再继续下一层搜索&#xff1a;层序遍历。 一、题目阅读 【102.二叉树的层序遍历】 给你二叉树的根节点 root &#xff0c;返回其节点值…

如何在iPhone上恢复图片?5 个有效解决方案

对于许多iPhone用户来说&#xff0c;照片是存储在他们设备上的最重要的数据&#xff0c;因此丢失这些照片可能是一场灾难。 但是&#xff0c;即使您不小心删除了iPhone上的部分或全部图片&#xff0c;也可以将其取回。 我们将讨论如何在有或没有备份的情况下在iPhone上恢复已…

面试篇-Mysql-2+事务隔离级别的实现

文章目录 前言一、Mysql 的事务你了解吗二、你了解Mysql 的事务隔离级别吗&#xff1a;2.1 你知道Mysql 的脏读&#xff0c;不可重复读&#xff0c;幻读的问题吗&#xff1a;2.1.1 脏读&#xff1a;2.1.2 不可重复读&#xff1a;2.1.3 幻读&#xff1a; 2.2 对于并发场景下的脏…

Python使用策略模式和openpyxl库创建Excel文件并追加内容

from openpyxl import load_workbook# 数据数组 data [[1, 2, 3],[4, 5, 6],[7, 8, 9] ]# 打开现有的 Excel 文件 excel_file sheetApend_example.xlsx wb load_workbook(excel_file)# 选择要追加数据的工作表 sheet_name test_Sheet2 # 指定要追加数据的工作表名称 sheet…

AI Agent满级进化!骑马种田、办公修图,样样精通,昆仑万维等发布通用Agent新框架

【导读】智能体又双叒叕进化了&#xff01;这次&#xff0c;什么游戏都能玩&#xff0c;什么软件都能操控了。 近日&#xff0c;昆仑万维携手北京智源人工智能研究院、新加坡南洋理工大学、北京大学等顶尖名校机构&#xff0c;联合提出了迄今为止第一个既能玩多种商业游戏又能…

Excel的Index+MATCH组合使用方法

INDEX函数 INDEX函数作用&#xff1a;用于从指定的单元格区域中返回特定行和列的值。 参数形式为&#xff1a;INDEX(array, row_num, [column_num]) array&#xff1a;必需。单元格区域或数组常量。 row_num&#xff1a;必需。要返回的值所在的行号。 [column_num]&#x…

【算法】【二分法】二分法详解

先给y总打一个广告。&#xff08;我这种废物收不到钱&#xff09; 本科时候就在打蓝桥杯玩玩算法&#xff0c;当时听朋友的一个刷题且涵盖教程的网站&#xff0c;ACWING。 www.acwing.com 里面好处是大部分基础算法都有&#xff0c;Y总的视频&#xff01; y总我的神&#xff01…

LLMs 入门实战系列

【LLMs 入门实战系列】 第一层 LLMs to Natural Language Processing (NLP) 第一重 ChatGLM-6B 【ChatGLM-6B入门-一】清华大学开源中文版ChatGLM-6B模型学习与实战 介绍&#xff1a;ChatGLM-6B 环境配置 和 部署 【ChatGLM-6B入门-二】清华大学开源中文版ChatGLM-6B模型微调…

Rust入门实战 编写Minecraft启动器#5启动游戏

首发于Enaium的个人博客 好了&#xff0c;我们已经完成了所有的准备工作&#xff0c;现在我们可以开始编写启动游戏的代码了。 首先我们需要添加几个依赖。 model { path "../model" } parse { path "../parse" } download { path "../downlo…

ensp防火墙综合实验作业+实验报告

实验目的要求及拓扑图&#xff1a; 我的拓扑&#xff1a; 更改防火墙和交换机&#xff1a; [USG6000V1-GigabitEthernet0/0/0]ip address 192.168.110.5 24 [USG6000V1-GigabitEthernet0/0/0]service-manage all permit [Huawei]vlan batch 10 20 [Huawei]int g0/0/2 [Huawei-…

git常用命令及git分支

git常用命令及git分支 git常用命令设置用户签名初始化本地库查看本地库状态将文件添加到暂存区提交到本地库查看历史记录版本穿梭 git分支什么是分支分支的好处分支的操作查看分支创建分支切换分支合并分支合并冲突 git常用命令 设置用户签名 //设置用户签名 git config --gl…

Datawhale 2024 年 AI 夏令营第二期——基于术语词典干预的机器翻译挑战赛

#AI夏令营 #Datawhale #夏令营 1.赛事简介 目前神经机器翻译技术已经取得了很大的突破&#xff0c;但在特定领域或行业中&#xff0c;由于机器翻译难以保证术语的一致性&#xff0c;导致翻译效果还不够理想。对于术语名词、人名地名等机器翻译不准确的结果&#xff0c;可以通…

emqx 负载均衡配置 HAProxy 健康检查 轮询 haship

HAProxy配置文件 配置文件&#xff1a; /etc/haproxy/haproxy.cfg 负载均衡参数&#xff1a; 轮询方式轮询注解roundrobin基于权重进行轮叫调度的算法&#xff0c;在服务器的性能分布比较均匀时&#xff0c;这是一种最公平合理&#xff0c;常用的算法。此算法使用较为频…

【银河麒麟高级服务器操作系统】数据中心系统异常卡死分析处理建议

了解银河麒麟操作系统更多全新产品&#xff0c;请点击访问&#xff1a;https://product.kylinos.cn 1.服务器环境以及配置 【机型】浪潮NF5280M5 处理器&#xff1a; Intel 内存&#xff1a; 1T 【内核版本】 4.19.90-24.4.v2101.ky10.x86_64 【OS镜像版本】 银河麒麟…

PDF 中图表的解析探究

PDF 中图表的解析探究 0. 引言1. 开源方案探究 0. 引言 一直以来&#xff0c;对文档中的图片和表格处理都非常有挑战性。这篇文章记录一下最近工作上在这块的探究。图表分为图片和表格&#xff0c;这篇文章主要记录了对表格的探究。还有&#xff0c;我个人主要做日本项目&…

MFC Ribbon菜单 - 中英文实时切换方法

简介 最近在搞一个老外的项目&#xff0c;本来谈的好好的&#xff0c;纯英文界面。项目接近尾声了&#xff0c;又提出了中英文实时切换的新需求&#xff0c;没办法就只能想办法&#xff0c;毕竟客户最大嘛。 实现方法 还好本来的ribbon英文菜单不复杂&#xff0c;就用纯C编码…

Python轻松添加行编号到Word文档及删除行编号

Word文档中的行号&#xff08;行编号&#xff09;功能是对于精细化的文档编辑以及解析非常有用的功能。添加行号能够极大地提升文档的可读性和定位效率&#xff0c;尤其是在需要引用特定行内容时&#xff0c;为读者提供了清晰的指引&#xff0c;避免了不必要的混淆和误解。然而…

Java BigInteger 类

目录 BigInteger 1. 如何获取一个BigInteger类型的对象&#xff1f; &#xff08;1&#xff09;构造方法 &#xff08;2&#xff09;静态方法 2. 常用方法 BigInteger 可以用来表示很大很大的数&#xff0c;有多大都可以。通过创建对象调用相应的方法。详见&#xff1a;…

45、tomcat+课后实验

tomcat 1、tomcat tomcat和php一样&#xff0c;都是用来处理动态页面的。 tomcat也可以作为web应用服务器&#xff0c;开源的。 php .php tomcat .jsp nginx .html tomcat 是用Java代码写的程序&#xff0c;运行的是Java的web应用程序。 tomcat的特点和功能&#xff1a…

前端调试技巧(npm Link,vscode调试,浏览器调试等)

Npm Link 功能&#xff1a; 在本地开发npm模块的时候&#xff0c;我们可以使用npm link命令&#xff0c;将npm 模块链接到对应的运行项目中去&#xff0c;方便地对模块进行调试和测试 断点调试 vscode调试 Debug Vue2 Project 目标&#xff1a;在VSCode中调试项目代码…