Java面向对象—异常

Java异常处理与面向对象编程基础 本文深入探讨了Java中的异常处理机制,包括如何捕获和抛出异常,以及面向对象编程(OOP)的核心概念,例如类、字段、构造函数和方法。通过实例和代码示例,详细解析了异常的类型和处理方式,以及如何在Java中实现封装、继承和多态。 阅读详情

发生异常我们可以使用if-else来堵漏洞,但这样加大工作量,而且堵不完,所以java提供了异常处理机制来解决,提高程序的健壮性

1、异常

(1)什么是异常:异常是指程序运行时发生的不正常现象,异常不是错误

(2)异常会提前结束程序,执行到有异常的地方程序就终止了

2、异常演示

Scanner in = new Scanner(System.in);
System.out.println("请输入被除数:");
int a = in.nextInt();//p
System.out.println("请输入除数:");
int b = in.nextInt();//0
System.out.println("商为:" + (a / b));
System.out.println("程序结束!");

当数据类型不匹配或者除数为0 时,就会发生异常。

3、异常处理:

(1)使用try-catch块自己处理异常

try{ ​ //代码块1,如果出了问题,会被catch捕获,如果没有出问题,catch块不会执行 ​ }catch(Exception e){ ​ //代码块2,出了问题才会生效,如街上的警察 ​ }finally{ ​ //代码块3,有没有出问题都会执行的, ​ } ​ //代码块4,后续的代码块

使用try-catch块自己处理异常,try块包含可能出现异常的程序段,catch块用来捕获异常并做处理

catch块可以有多个,用来处理不同的异常情况,子异常在前,父异常在后

例如:InputMismatchException是Exception的子类,写的时候写在前,写在后时会报错

public class Test01 {
    public static void main(String[] args) {
        try {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入除数:");
            int a = in.nextInt();//p
            System.out.println("请输入被除数:");
            int b = in.nextInt();//0
            System.out.println("商为:" + (a / b));
        }catch (InputMismatchException e){
            System.out.println("输入类型不匹配异常");
        }catch (ArithmeticException e){
            System.out.println("算术问题异常");
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println("程序结束!");
    }
}

注:从出现异常的地方到catch处的程序是不会执行的

在catch块中处理异常的提示信息是为了给用户看的,编程人员看到的应该是异常的报错信息

(2)使用throw和throws抛出异常

throw用来抛出异常,throws用来声明异常,把throw抛出的异常给调用者,由调用者来处理

public class ThrowTest03 {
    //可能会有异常抛出来,如果有则抛给对应的调用者
    public void cal() throws InputMismatchException,ArithmeticException {
        Scanner in = new Scanner(System.in);
        int a,b;
        System.out.println("请输入被除数:");
        if(in.hasNextInt()){//判断是否是数字
            a = in.nextInt();//p
        }else{//不是数字则抛出输入类型异常
            System.out.println("输入错误,请输入数字!!");
            throw new InputMismatchException();
        }
        System.out.println("请输入除数:");
        if (in.hasNextInt()){
            b = in.nextInt();//0
            if (b==0){//如果除数为0,抛出算术问题异常
                System.out.println("输入错误,除数不能为0!!");
                throw new ArithmeticException();
            }
        }else {
            System.out.println("输入错误,请输入数字!!");
            throw new InputMismatchException();
        }
        System.out.println("商为:" + (a / b));
        System.out.println("程序结束!");
    }
}

谁调用cal()方法,那么异常就抛给谁,由调用cal()方法的调用者来处理异常,同理,调用者也可以再往外抛出。但最终一定要对异常进行处理。所以在程序开发中,尽量少抛出异常,多用try-catch块自己处理

4、finally - return - exit关键字的作用

finally用在try-catch块后,表示最终的,无论都会执行的块

return用在方法中,表示结束方法并返回结果,但是return和finally都存在时,即使有return,finally块也会执行

System.exit()表示结束程序退出,会返回exit()方法中传入的值。如果执行到exit(),那么后面的return和finally都不会执行

优先级:System.exit(0)>finally>return

public class Test02 {
    public static void main(String[] args) {
        try {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入除数:");
            int a = in.nextInt();//p
            System.out.println("请输入被除数:");
            int b = in.nextInt();//0
            //System.exit(0);//结束退出并返回0
            System.out.println("商为:" + (a / b));
            return ;//结束方法,但finally会执行
        }catch (InputMismatchException e){
            System.out.println("输入不匹配异常");
        }catch (ArithmeticException e){
            System.out.println("算术问题异常");
        }catch (Exception e){
            e.printStackTrace();
        }finally {//无论如何都要执行的块
            System.out.println("无论如何都会执行到");
        }
        System.out.println("程序结束!");
    }
}

5、常见的异常

异常名 说明 ​ Exception 异常层次结构的根类 ​ ArithmeticException 算术错误情形,如以零作除数 ​ ArrayIndexOutOfBoundsException 数组下标越界 ​ NullPointerException 尝试访问 null 对象成员 ​ ClassNotFoundException 不能加载所需的类 ​ InputMismatchException 欲得到数据类型与实际输入类型不匹配 ​ IllegalArgumentException 方法接收到非法参数 ​ ClassCastException 对象强制类型转换出错 ​ NumberFormatException 数字格式转换异常,如把"abc"转换成数字

6、自定义异常

自定义异常:一个类只要继承了Exception,那么这个类就是自定义异常类

public class Test05MyException extends Exception{
    public Test05MyException(){//空构造
        super();
    }
    public Test05MyException(String message){//一个参数的构造
        super(message);
    }
​
    //int a="";//编译时异常
    int a=1/0;//运行时异常
}

7、异常分类

编译时异常:程序写完就报出错误

运行时异常:程序运行时报出错误

8、异常分类结构图

异常分类结构图:

(1)Throwable是类不是接口

(2)Error是系统的错误,不是程序可以解决的,不需要我们处理

(3)Exception是我们可以处理的异常又分为:

a.RuntimeException:运行时异常,用户可以不作出处理,系统会自动处理

9、二维数组

public class Test06 {
    public static void main(String[] args) {
        //一维数组
        int [] arr={1,2,3,4,5};
        //二维数组
        int [][] list={
                {01,02,03,04,05},
                {12,22,32,42,52},
                {13,23,33,43,53}
        };
        //二维数组每行的个数可以不一样
        int [][] list1={
                {01,02,03},
                {12,22,32,42,52},
                {13}
        };
        //二维数组声明
        int [][] a=new int[5][];
        //表示该数组的第一维长度为5,声明二维数组时第一维必须指定长度,现在数组中默认存着5个地址值

        int [][] b=new int[5][];
        //b[0]=new int[3];//表示第一维的第0位置存着3个0

        //二维数组输出
        int [][] c=new int[5][3];
        for (int i = 0; i <c.length ; i++) {
            for (int j = 0; j < c[i].length; j++) {
                System.out.print(c[i][j]+"\t");
            }
            System.out.println();
        }

        //三维数组
        int [][][] d=new int[5][][];
    }
}

231003-四步MacOS-iPadOS设置无线竖屏随航SideCar 新建虚拟屏幕参考文献。 阅读详情

相关推荐

AFSim 2.9实战指南:从入门到精通的中文教程

本文是AFSim 2.9的实战中文教程,旨在帮助用户从零开始掌握这一先进的仿真框架。内容涵盖从环境安装、运行第一个“Hello World”仿真,到深入理解实体、组件、想定编辑器等核心概念,并进阶探讨动力学建模、传感器仿真与红蓝对抗想定构建。最后,指南还提供了效能分析与实战排错技巧,帮助用户将仿真结果转化为有价值的量化数据,适用于军事、航空航天等领域的复杂系统行为模拟研究。

weixin_29294395的博客 355

Java面向对象-异常

了解异常概念、理解Java异常处理机制、捕捉异常、抛出异常、了解Java异常体系结构。

FreedomLifepa的博客 1642

Windows下超详细安装Anaconda3以及jupyter notebook

1.下载Anaconda安装包 Anaconda官网网站:https://www.anaconda.com/products/individual下载安装包速度比较慢,国内小伙伴不建议尝试。 我们可以使用清华大学开源软件镜像站:清华大学开源软件镜像站:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/,请选择适合自己系统自行下载。 下载完成后如下图: 1.安装Anaconda安装包 1.打开安装包,点击Next 2.点击I Agre

m0_37957160的博客 3801

Java面向对象--Java中的异常

1、 在Java中,源文件Test.java中包含如下代码段,则程序编译运行结果是( B) public class HelloWorld{ public static void main(String[] args){ System.out.print(“HelloWorld!”); } } A、 输出:HelloWorld! B、 编译出错,提示“公有类HelloWorld必须在HelloWorld.java文件中定义” C、 运行正常,..

foxmaxiaoyu的博客 4575

从技术债红线到系统治理:透视 SAP Clean Core 中的 Level D

SAP推出的Clean Core分级体系将扩展风险划分为A到D四个等级,其中Level D代表最高风险类别,涉及直接修改标准代码、隐式增强、使用noAPI对象等不被推荐的做法。这些做法虽然短期见效快,但会带来升级冲突、数据完整性风险等长期问题。SAP强调治理重点不是完全消除经典ABAP,而是优先清理Level D对象,逐步向稳定接口迁移。典型案例显示,依赖内部细节的扩展往往在系统升级或云迁移时集中暴露出问题。企业应通过工具链持续监控Level D占比,将其纳入技术债管理范畴。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1063

如何在 R 中使用 Gamma 分布(附示例)

在统计学中,伽马分布通常用于模拟与等待时间相关的概率。我们可以使用以下函数来处理 R 中的 gamma 分布:dgamma(x, shape, rate) – 找到具有特定形状和速率参数的 gamma 分布的密度函数值。 pgamma(q, shape, rate) – 找到具有特定形状和速率参数的伽马分布的累积密度函数值。 qgamma(p, shape, rate) – 找到具有特定形状和速率参数的 gamma 分布的逆累积密度函数值。 rgamma(n, shape, rate) – 生成 n 个随机

Mrrunsen的博客 4415

【Java】面向对象——异常

Java异常是Java提供的用于处理程序中错误的一种机制

weixin_46437504的博客 988

STM32F103RCT6的FLASH读写操作

STM32F103RCT6是一款常用的32位微控制器,它具有内置的FLASH存储器,可以用于存储程序代码和数据。在本文中,我们将详细介绍如何进行STM32F103RCT6的FLASH读写操作,并提供相应的源代码。写入数据时,我们通过将数据直接写入FLASH地址来完成。通过使用适当的API和规则,我们可以有效地读取和写入数据。写入FLASH时,我们需要按特定的规则进行编程。首先,我们需要包含适当的头文件和定义相关的宏和变量,以便在代码中使用FLASH API。类型的指针,我们可以直接读取FLASH中的数据。

UplKubernetes的博客 1032

Java 面向对象编程--异常

Java 面向对象编程--异常

黑白土豆的博客 1418

《Android系统开发中高级定制专栏导读》

欢迎来到【Android 中高级系统定制】专栏!在这里,将深入探讨Android系统开发与定制的方方面面,涵盖从权限管理、驱动开发到系统应用配置等多个领域。

我其实什么都不会 1575

基于Simulink的永磁同步电机三闭环(位置/速度/电流)控制仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环控制系统设计与实现方法。系统采用位置环、速度环、电流环的三层嵌套结构,通过坐标变换(Clark/Park)实现解耦控制,达到精密定位目的。文章包含完整的建模步骤:从主电路搭建、三环PID设计到坐标变换与SVPWM调制实现,并提供了核心控制算法的MATLAB代码。通过工业机械臂关节场景验证,系统在阶跃响应(稳态误差0.002°)、正弦跟踪(误差0.008°)和抗扰动性能(恢复时间0.05s)方面表现优异。最后还提出了前馈补偿、扰动观测器等优化方向。该方案适

xiaoheshang_123的博客 280

【Java学习系列】Java面向对象之异常

Java面向对象之异常小知识

Tuerlechat,的博客 271

【Windows Server 2019】邮件服务器配置与管理——安装及配置Winmail服务器(上)

博文介绍了如何安装邮件服务器 Winmail,如何配置Winmail,包括运行服务器,Winmail管理工具介绍和域名配置。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 2万+

java面向对象与异常

初识面向对象方法回顾和加深对象的创建和分析面向对象的三大特性抽象类和接口内部类和oop实战初识面向对象面向过程&面向对象: 类=属性+方法对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍需要面向过程的思路去处理面向对象编程(oop)面向对象编程本质:以类的方式组织代码,以对象的形式封装数据抽象三大特性:封装,继承,多态 方法回顾和加深 方法的定义:方法的调用:(静态方法和非静态方法)非静态方法直接通过类名调用(类名.方法)非静态方法要

qq_74146366的博客 1348

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

java 异常对象_java面向对象&异常

title: java面向对象&异常date: 2020-09-21 15:14:56tags:java面向对象&异常一. 面向对象1.1 面向过程&面向对象面向过程思想步骤清晰简单,第一步做什么,第二步做什么... .面向过程适合处理-些较为简单的问题面向对象思想物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下...

weixin_30242741的博客 229

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Java5】面向对象+异常

面向对象 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BErh0HRd-1625318616431)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210531094526438.png)] 初识面向对象 面向过程&面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么… 面对过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分

weixin_41773166的博客 219

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JAVA-面向对象之异常处理

面向对象之异常处理 ---云智科技学习笔记 异常 异常的体系 •    Throwable •    Error •    通常出现重大问题如:运行的类不存在或者内存溢出等。 •

yixuan_1的专栏 787

java 异常继承体系,Java面向对象之异常详解【一】

Java面向对象之异常详解【一】目录Java面向对象之异常【一】异常的继承体系ErrorException异常是否受检unchecked exceptions(不受检异常)checked exceptions(受检异常)异常的处理方式自定义异常异常的捕获方式Java面向对象之异常【一】终于完成本学期的最后一门考试,考试周的我,边复习通信之傅里叶变换,边学习Java的新知识。虽然很久没更,但是私底下...

weixin_34117129的博客 213

Java笔记---Java面向对象和异常

Java笔记—Java面向对象和异常 第二章 面向对象 1. 面向对象概念 面向过程VS面向对象 面向过程:步骤清晰第一步第二步适合处理规模不大的简单问题。(线性) 面向对象(OOP):分类思维模式,解决问题需要哪些分类,然后对这些分类进行单独思考,最后才对某个分类下的细节进行面向过程的探索,适合处理复杂问题和处理需多人协作的问题。 面向对象编程的本质:以类的方法组织代码,以对象的组织封数...

Armor的博客 393

JAVA面向对象程序设计(四)录入异常处理

在Java面向对象程序设计中,自定义异常类是一项重要的功能,它允许开发者根据程序的特定需求定义新的异常类型。异常是在程序执行过程中发生的不正常情况,它会中断程序的正常流程。在Java中,异常本身就是一个类,产生异常其实就是创建异常对象,并抛出一个异常对象。自定义异常类需要继承Exception类或其子类(对于检查型异常)或RuntimeException类(对于非检查型异常)。• 继承Exception的自定义异常是检查型异常,需要在方法中捕获或者在方法声明中指定throws异常。

MeyrlNotFound的博客 1037

Java面向对象异常学习

Java面向对象之异常 一、异常 1.1 异常概述 异常:就是程序出现了不正常的情况 1.2 异常体系 Error:严重问题,不需要处理 Exception:称为异常类,它表示程序本身可以处理的问题 RuntimeException:在编译期是不检查的,出现问题后,需要我们回来修改代码 非RuntimeException:编译期必须处理的,否则程序不能通过编译,就更不能正常运行了 public class ExceptionDemo { public static void main(Stri

hua226的博客 499

Java面向对象之异常详解

Java面向对象之异常详解

kodmoqn的博客 99

java面向对象---异常

java面向对象 异常(exception): 异常不等于错误! Java异常处理通过5个关键字控制:try、catch、 throw、throws和 finally 所有异常的父类exception throw引发一个异常(用在方法体内,后面跟的是异常类对象名) throws抛出一个异常(跟在方法声明后面,后面跟的是异常类名) ...

z874215447的博客 176

java必备——通过异常处理看面向对象

在看java视频的时候,看到异常处理的时候,我认识到自己编程上的一个缺憾,就是以前的错误处理他范范,我们应该针对不同的错误,做不同的处理,我拿出自己c#和vb的代码,看了看错误处理代码,发现,他们的格式很相似,想到面向对象和面向过程的对比,我想,咱们也许可以在这里,再挖掘一把!     在编写VB的时候,我作为一个小白,基本没有用过错误处理,心中的他是个很高大上的技术,而随着学习了c#,java

ESOO 2655

JAVA面向对象第六课-异常

异常 在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境,例如用户的坏数据、试图打开一个不存在的文件等。为了能够及时有效地处理程序中的运行错误,Java 专门引入了异常类。 为了更好地理解什么是异常,下面来看一段非常简单的 Java 程序。下面的示例代码实现了允许用户输入 1~3 以内的整数,其他情况提示输入错误。 import java.util.Scanner; public class Test01 { public static void main(String

giantleech的博客 176

【八股学习】Java基础——面向对象、反射、异常

可以通过子类覆盖这个方法,打印本地化信息,如果没有重写则与getMessage结果相同。程序无法处理的错误,不建议通过catch捕获处理。受到异常检查,Java编译过程中,如果这个类型的异常没有被。在控制台上打印 Throwable 对象封装的异常信息。虚拟机在finally之前被终止的情况,代码不会被执行。当前程序所在的线程死亡和CPU关闭也会导致其不执行。如果有多个资源需要关闭,只需要在不同的资源中间加上“编译过程中不进行处理也可以通过编译。程序本身可以处理的异常,通过。处理,无法通过编译。

messiy727的博客 472
上一篇: Java面向对象—接口
下一篇: Java面向对象—集合框架
得闲饮茶呃
博客等级 码龄4年 303粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值