木舟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();//不处理异常 再次往方法上抛出 使用场景:在数据库
        }

    }

    @Override
    public 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);
    }
}

注意:

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#实现最短路径算法

创建点集 double r 200 * 500;double width 1920;double height 1080;int col (int)(r / width);int row (int)(r / height);List<(double, double)> list1 new List<(double, double)>();for (int i 0; i < row; i){var y i * height;if (y < r){va…

青年发展型城市成新青择地,期待与挑战并存

随着社会的发展和城市化进程的加快&#xff0c;青年人在选择未来定居地时面临着越来越多的选择。近日&#xff0c;中国青年报社社会调查中心联合问卷网对1500名青年进行的一项调查显示&#xff0c;74.8%的受访青年表示会优先考虑青年发展型城市。那么&#xff0c;青年在选择未来…

编程范式之并发编程

目录 前言1. 并发编程的定义2. 并发编程的特点2.1 任务交替执行2.2 状态共享与同步2.3 并行执行 3. 并发编程的适用场景3.1 高性能计算3.2 I/O 密集型应用3.3 实时系统 4. 并发编程的优点4.1 提高资源利用率4.2 缩短响应时间4.3 提高系统吞吐量 5. 并发编程的缺点5.1 编程复杂性…

gpt-4o看图说话-根据图片回答问题

问题&#xff1a;中国的人口老龄化究竟有多严重&#xff1f; 代码下实现如下&#xff1a;&#xff08;直接调用openai的chat接口&#xff09; import os import base64 import requests def encode_image(image_path): """ 对图片文件进行 Base64 编码 输入…

微分方程建模

微分方程建模是数学建模的重要方法&#xff0c;因为许多实际问题的数学描述将导致求解微分方程的定解问题。在高教杯数学建模竞赛中每年都会有一道微分方程建模问题&#xff0c;大体上可以按以 下几步&#xff1a; 1. 根据实际要求确定要研究的量(自变量、未知函数、必要的参数…

【Linux信号】阻塞信号、信号在内核中的表示、信号集操作函数、sigprocmask、sigpending

我们先来了解一下关于信号的一些常见概念&#xff1a; 实际执行 信号的处理动作 称为信号递达。 信号从产生到递达的之间的状态称为信号未决。 进程可以选择阻塞(Block)某个信号。 被阻塞的信号产生时是处于未决状态的&#xff0c;知道进程解除对该信号的阻塞&#xff0c;该…

基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将FPGA仿真结果导入到matlab显示结果&#xff1a; 测试样本1 测试样本2 测试样本3 2.算法运行软件版本 vivado2019.2 …

鸿蒙HarmonyOS应用开发为何选择ArkTS不是Java?

前言 随着智能设备的快速发展&#xff0c;操作系统的需求也变得越来越多样化。为了满足不同设备的需求&#xff0c;华为推出了鸿蒙HarmonyOS。 与传统的操作系统不同&#xff0c;HarmonyOS采用了一种新的开发语言——ArkTS。 但是&#xff0c;刚推出鸿蒙系统的时候&#xff0…

MySQL数据库课程设计——订餐系统(MySQL数据库+Qt5用户界面+python)

目录 一、系统定义 二、需求分析 三、系统设计 四、详细设计 五、参考文献 一、系统定义 订餐系统是一种基于网络技术的在线点餐平台&#xff0c;旨在为用户提供方便快捷的订餐服务。该系统主要包括用户登录、用户管理、菜单管理、订单管理、支付管理、评价管理等功能模块…

云服务器重置密码后,xshell远程连接不上,重新启用密码登录方式

云服务器重置密码后 &#xff0c;xshell连接出现不能使用密码登录 解决方案&#xff1a;以下来自阿里云重新启用密码登录方式帮助文档 为轻量应用服务器创建密钥且重启服务器使密钥生效后&#xff0c;服务器会自动禁止使用root用户及密码登录。如果您需要重新启用密码登录方式&…

比特币交易繁忙的一天

早晨:市场开盘与准备工作 6:00 AM - 全球市场监测 交易员们早早起床,开始监测全球市场动态,尤其是亚洲市场的动向。通过查看新闻、分析报告和市场数据,了解可能影响比特币价格的因素。 7:00 AM - 团队会议 召开晨会,讨论当天的交易策略。团队分析前一天的交易情况,评…

OpenGL笔记五之VBO与VAO

OpenGL笔记五之VBO与VAO 总结自bilibili赵新政老师的教程 code review! 文章目录 OpenGL笔记五之VBO与VAO1.VBO2.VAO3.VBO与VAO对比 1.VBO 代码 void prepareVBO() {//1 创建一个vbo *******还没有真正分配显存*********GLuint vbo 0;GL_CALL(glGenBuffers(1, &vbo))…

适合创业公司使用的wordpress主题

对于创业公司来说&#xff0c;‌选择一个适合的WordPress主题至关重要&#xff0c;‌它不仅能够提升公司网站的外观和用户体验&#xff0c;‌还能帮助优化搜索引擎排名&#xff0c;‌从而吸引更多的潜在客户。‌以下是一些推荐的WordPress主题&#xff0c;‌特别适合创业公司使…

人工智能算法工程师(中级)课程2-Opencv视觉处理之高级操作与代码详解

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能算法工程师(中级)课程2-Opencv视觉处理之高级操作与代码详解。在上一节课中的OpenCV基础操作我们了解到OpenCV是一个开源的计算机视觉软件库。它提供了各种视觉处理函数&#xff0c;并支持多种编程语言&…

传感器标定(三)激光雷达外参标定(lidar2ins)

一、数据采集 1、LiDAR 传感器的 LiDAR PCD 数据 2、来自 IMU 传感器的姿势文件 3、手动测量传感器之间外部参数初始值并写入的 JSON 文件 二、下载标定工具 //总的git地址&#xff1a; https://github.com/PJLab-ADG/SensorsCalibration git地址&#xff1a; https://githu…

扩散基生物打印:打造多材料组织构建的新篇章

生物打印技术正在经历快速发展&#xff0c;而扩散基生物打印作为一种新兴策略&#xff0c;为制造更复杂和功能化的组织构建物提供了新的可能性。这种方法利用扩散原理&#xff0c;通过在不同区域之间扩散酶、交联剂或可交联聚合物来促进交联&#xff0c;从而实现多种材料的集成…

【论文阅读笔记】ASPS: Augmented Segment Anything Model for Polyp Segmentation

1.论文介绍 ASPS: Augmented Segment Anything Model for Polyp Segmentation ASPS&#xff1a;用于息肉分割的扩展SAM模型 2024年 arxiv Paper Code 2.摘要 息肉分割在结直肠癌诊断中起着至关重要的作用。最近&#xff0c;Segment Anything Model(SAM)的出现利用其在大规模…

软件缺陷简介

缺陷种类 遗漏&#xff0c;指规定或预期的需求为体现在产品种错误&#xff0c;需求是明确的&#xff0c;在实现阶段未将需求的功能正确实现冗余&#xff0c;需求说明文档中未涉及的需求被实现了不满意&#xff0c;用户对产品的实现不满意也成为缺陷 缺陷等级划分 致命&#…

【测试】软件测试报告模板(直接套用)

软件资料清单列表部分文档清单&#xff1a;工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0c;用户需求说明书&#xff0c;概要设计说明书&#xff0c;技术解…

PGCCC|【PostgreSQL】PCA+PCP+PCM等IT类认证申报个税退税指南

小编特将PostgreSQL证书申报个税退税流程&#xff0c;编辑成文&#xff0c;供大家申报参考哦~ 1.申报专项附加扣除 第一步&#xff1a;打开个人所得税APP&#xff0c;选择“专项附加扣除填报”&#xff1a; 第二步&#xff1a;“扣除年度”选择您要申报的年度&#xff0c;并…