Java中的异常和处理详解及总结

JAVA中异常处理详解 异常(Exception)是程序执行期间发生的事件,它会中断程序的正常指令流。简单来说,异常是一个表示程序出现错误或异常状态的对象。在Java中,异常是一种特殊类型的对象,它从类继承而来。当方法遇到无法处理的情况时,会创建一个异常对象并将其"抛出",然后Java运行时系统会寻找能够"捕获"并处理这个异常的代码。当标准异常类不足以表达特定的错误情况时,可以创建自定义异常类。// 自定义已检查异常super("余额不足,还需 " + amount + " 元");// 使用自定义异常A6。 阅读详情

Java中的异常

首先,在下图先看看异常之间的关系
在这里插入图片描述

异常的概念

什么是(现实生活中的)异常?

在回家的路上,见到老太太摔倒,扶了老太太.

什么是Java中的异常

  1. 代码正常运行不会出问题,但是遇到意外,参数变量,不符合要求,发生意外,代码终止运行

  2. 代码中的异常处理好了,代码就可以顺利的继续运行!

    初学者一般见到的几个异常

异常后面的代码执行布了,只有解决好异常后,才能执行下次
例如: 除法
java.lang.ArithmeticException: / by zero
空指针异常
java.lang.NullPointerException
数组索引越界
java.lang.ArrayIndexOutOfBoundsException:

一般出现异常,有两种情况可以解决:

1,抛出异常,给被人解决:

2,自己解决:

抛出异常:

语法结构:方法后面使用throws 需要抛出的异常类型.

看代码:

public class SimpleDateF {
    public static void main(String[] args) throws ParseException {   //抛出异常的写法
        Date date = new Date();
        SimpleDateFormat simpleDateF = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        String f = simpleDateF.format(date);
        System.out.println(f);
        //自定义格式
        simpleDateF = new SimpleDateFormat("y年M月d天");
        String st = "2019年4月20日";
        Date p=simpleDateF.parse(st);  //抛出异常
        System.out.println(p);

     //   System.out.println(simpleDateF);

    }
}
这块代码异常  Date p=simpleDateF.parse(st);   抛出后可以正常运行
 simpleDateF = new SimpleDateFormat("y年M月d天");
        String st = "2019年4月20日";
        Date p=simpleDateF.parse(st);  //抛出异常
        System.out.println(p);

运行结果:1555731417381

注: 抛出异常的注意事项:

①方法抛出运行时异常,在方法头可以不用抛出异常

②方法抛出编译时异常:方法必须处理异常,或者抛出同类异常,或者抛出异常该异常的父类类型异常

自己处理[捕获异常]

  1. try-catch的语法结构及链式结构多异常处理方式语法:

try{

//可能产生异常的代码

}catch(捕获的异常类型 e){//e是形式参数

//该异常捕获之后要做的操作

}catch(捕获的异常类型 e){//e是形式参数

//该异常捕获之后要做的操作

}finally{

//异常发生之后一定会执行到的语句块:

//①流资源关闭②释放锁

}

代码实现:

public class Try_Finally {
    public static void main(String[] args) {
        try {  //可能出现异常的代码块
            int[] arr = {1, 2};
            System.out.println(5 / 0);
            System.out.println(arr[3]);
        } catch (java.lang.ArrayIndexOutOfBoundsException e) {     //一般都直接放父类,他会自动打出错误类型
            //()可能发生异常的类型  {},执行到这儿,相应的代码块,
            // 对应的进入,进入一个,其他就布进入,
            // 执行完毕,继续下面代码走
            System.out.println(e + "异常处理");
        } catch (java.lang.ArithmeticException e) {
            System.out.println(e+"异常都走了");
        } finally {       //结构一定会执行的代码块,一般作为释放
             System.out.println(55);
        }
    }
}

finally: 作为释放锁和关闭资源流, 2,在虚拟机没有关闭的情况下,都能执行到.
3.一般和try-catch 一起用. 处理异常后finally一定会执行到
一般不再finally写返回语句return语句,难于理解.

看代码理解:

public class Finally_ {
    public static void main(String[] args) {
       /*
        finally: 作为释放锁和关闭资源流,  2,在虚拟机没有关闭的情况下,都能执行到.
         3.一般和try-catch 一起用.   处理异常后finally一定会执行到
         一般不再finally写返回语句return语句,难于理解.
        */
       test_Finally();
        System.out.println(test_Finally());
    }

    static int test_Finally() {
        int a = 10;
        try {
            System.out.println(3 / 0);  //有异常,进入catch
            return a;
        } catch (Exception e) {  //处理完成,如果没有finally,返回11
            a = 11;
              return a;
        } finally {
            a = 22;      //上面有异常会进入catch处理,当处理好了一行 向下执行
            return a;
        }
    }
}

  1. 顺序执行:进入异常捕获语句块

  2. 如果产生异常,执行catch捕获,捕获到对应异常,并且对应catch后面的代码块

  3. finally语句块一定会执行到:前提前面语句没有执行System.exit(0)退出虚拟机

获得异常信息的方式

异常捕获分析

a. 写多个捕获异常的语句块,链式结构捕获多异常,根据不同的异常,做不同的处理

b. 捕获异常可以写异常的父类,也可以捕获到对应子类的异常

c. catch(捕获的异常类型 e)捕获的异常实际捕获一个异常对象,该对象e可以在catch语句块直接使用

代码:

public class GetMs {
    public static void main(String[] args) {
        try {
            int[] arr = {11, 22};
            System.out.println(arr[5]);
        } catch (java.lang.ArrayIndexOutOfBoundsException e) {
            System.out.println(e);
            String gms = e.getMessage(); //获取异常
            System.out.println(gms);
            e.printStackTrace();
        //打印异常
        } finally {
            System.out.println("缓冲哈");
        }

    }
}
Java异常处理总结 立即下载

相关推荐

储能变流器(Power Control System——PCS)设计原理

储能变流器(Power Control System——PCS)可控制蓄电池的充电和放电过程,进行交直流的变换,在无电网情况下可以直接为交流负荷供电。PCS 由 DC/AC 双向变流器、控制单元等构成。PCS 控制器通过通讯接收后台控制指令,根据功率指令的符号及大小控制变流器对电池进行充电或放电,实现对电网有功功率及无功功率的调节。 PCS 控制器通过 CAN 接口与 BMS 通讯,获取电池组状态信息,可实现对电池的保护性充放电,确保电池运行安全。   储能变流器(PCS)可控制蓄电池的充电和放电过程,进

Zhouengineer的博客 5万+

一次搞懂Java异常处理(超详细!!!)!

Java标准库中提供了非常多表的异常类型,用来表达各种异常情况,然而在真实开发中,这些异常并不能完全满足我们的需求,因为标准库的异常往往表达的是技术层面,而不是业务层面,像账号密码错误这种情况,用标准库的异常就不太合适,所以在开发中我们会自定义异常类型,来表达符合我们业务的异常情况。finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法放入finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。

weixin_53622554的博客 1万+

主板USB接口全部失效解决方案(通用串行总线USB控制器有黄色叹号)保姆级教程亲测有效

通用串行总线控制器总是有叹号解决办法 办公室的崩腾时代老电脑,疫情期间没人用,来了开机之后发现鼠标键盘都用不了,本以为是主机放时间长出了问题,后来想起来就百度了“鼠标键盘都失效”的标题,结果发现了“串行总线控制器总是感叹号”的关联问题。正好办公室电脑都装有teamviwer常用来远程办公(在家偷懒)。所以通过远程发现电脑室可以运行的。并在控制面板发现:通用串行总线控制器总是感叹号,插入外设时USB无反应。如图:​ 并且右键选中其中一个,点击最后一个选项:“属性” 可以发现“设备状态”中会提示“由...

xiao_bai_0_0的博客 2万+

Java异常处理知识点学习总结篇

Java异常是指在程序运行过程中发生的不正常情况,例如除数为零、数组越界、文件不存在等。Java提供了一套异常处理机制,通过使用try-catch-finally语句块来捕获和处理异常。本文将介绍Java异常的基本概念和用法,包括以下几个方面:异常的分类:检查型异常和非检查型异常的区别和特点异常的处理:try-catch-finally语句块的作用和用法异常的抛出:throw关键字和throws关键字的作用和用法异常的自定义:如何创建和使用自定义异常类。

m0_64015460的博客 769

无法找到 Adobe PDF资源文件。“Acrobat PDFMaker“您必须具有”管理员”权限方可安装这些文件...错误怎么解决

本文的内容是无法找到 Adobe PDF资源文件。“Acrobat PDFMaker“您必须具有”管理员”权限方可安装这些文件...错误的解决办法。

西岸贤 1万+

Modbus TCP 通信(C#)

【代码】Modbus TCP 通信(C#)

weixin_56229359的博客 1150

终于有人把Java异常处理方法给总结出来了,吃透这篇足够

这篇文章是我之前学过的基础总结,希望对大家有所帮助!我们在做程序开发时候,都想着把代码写的完美无瑕(不大可能)客户输入的数据格式读取文件是否存在网络是否始终保持通畅我们把这类问题,归结为异常!异常概念:在Java语言中,将程序执行中发生的不正常情况称为异常(异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行)Java中异常分为两类Error:java虚拟机无法解决的严重问题(JVM系统内部错误、资源耗尽),一般没办法编写针对性代码进行处理(处理不了。

the shy 4205

PointNet/PointNet++模型调参实战:如何用PyTorch让你的点云分割精度再涨5个点?

本文深入探讨了PointNet/PointNet++模型在点云分割中的调参技巧,通过PyTorch实现精度提升5个点的实战方法。重点分析了点云密度自适应策略、感受野与细节保留的平衡,以及训练加速与稳定性技巧,适用于电力巡检、自动驾驶等场景的激光点云数据处理。

weixin_30836759的博客 476

Java异常处理机制全网最详细总结(小白也能理解)

Java异常处理机制全网最详细总结(小白也可以轻松理解)

m0_51358164的博客 4392

# ubuntu 系统使用 yum命令报错 There are no enabled repos.Run “yum repolist all“ to see the repos you have...

# ubuntu 系统使用 yum命令报错 There are no enabled repos.Run "yum repolist all" to see the repos you have.You can enable repos with yum-config-manager --enable

段子手168的博客 6680

【VS开发】【DSP开发】WinDriver简介(或介绍)

WinDriver for Windows简化并自动化了用户模式Windows设备驱动程序的开发,支持设备包括PCI / CardBus / ISA/ PCI-104 / PCMCIA * / PMC / PCI-X 和 CompactPCI,无需DDK或内核级编程知识。关于USB设备驱动开发,请参见WinDriver USB for Windows。   WinDriver包含一系列

ZhangPY的专栏 1474

异常注意事项_多异常的捕获处理

package com.learn.demo03.Exception; import java.util.Arrays; import java.util.List; /* 异常的注意事项 */ public class Demo01Exception { public static void main(String[] args) { /* ...

Leon_Jinhai_Sun的博客 457

13、核心网络模块:VyOS 设备配置实战

本文详细介绍了如何使用 Ansible 核心网络模块对 VyOS 虚拟设备进行自动化配置,涵盖环境搭建、变量设置、任务编写、playbook 运行及配置验证全过程。通过实际案例展示了 Ansible 在网络设备管理中的强大功能,包括多设备支持、模板化配置、备份回滚等优势,并提供了最佳实践建议与未来发展趋势分析,帮助读者提升网络运维效率。

linux6sysadmin的博客 114

java异常处理

什么是异常 异常处理 如何捕捉异常? finally语句 常见异常 自定义异常 那么具体如何自定义异常类呢? throw关键字 throws关键字 运行时异常 异常处理流程

随便写点C++和JAVA的知识 6300

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java中的异常处理

异常的作用增强程序的健壮性。java中异常以什么形式存在?异常在java中以类的形式存在,每一个异常类都可以创建异常对象。JVM执行到某一处觉得有异常,会new异常对象,并且将new的异常对象抛出,打印输出信息到控制台了。如异常对应的现实生活火灾(异常类)2008年8月8日,小明家着火了(异常对象)2008年8月9日,小红家着火了(异常对象)异常体系结构注意所有异常都是在运行阶段发生的,因为只有程序运行阶段才可以new对象,因为异常的发生就是new异常对象。第一种方式。......

weixin_45581692的博客 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java异常处理和异常抛出

生活中的异常是指那些有异于常态,和正常情况不一样,有问题的状态,编程世界中的异常是指阻止当前方法或作用域继续执行的状态。比如,程序要打开一个不存的文件、网络连接中断、除零操作、操作数越界、装载一个不存在的类等情况。这些情况会使程序中断执行。这时异常处理机制就很重要了,它会以适当的方法让程序继续执行或者退出,并且能够保存用户的当前操作或者进行数据回滚,最后再把占用的资源释放掉。 一.Java异常体系...

芒果就是没有盲的博客 9393

Java中的异常和处理详解

简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。   Java提供了更加优秀的解决办法:异常处理机制。   异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代...

weixin_34414196的博客 2406

java中的异常,异常处理

jdk自带了很多异常类型。我们为了更好的知道异常类型。我们可以自己定义异常类。根据不同的异常名称,判断异常的错误。public class 异常类名 extends RuntimeException{public 异常类名(String msg){super(msg);

nie6668888的博客 1405

JAVA中的异常处理机制及异常分类

JAVA的异常处理机制:如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。一、异常分类如下: –>Throwable是 Java 语言中所有错误或异常的超类。下一层分为Error和Exception –>Er

sinat_36713319的博客 2万+

Java异常处理终结篇——如何进行Java异常处理设计

使用Java异常的人很多,但能合理使用的却不多,Java异常处理设计是一个冷门的话题,但好的异常设计会让程序有质的变化,所以本文从各个方面分析便总结了,在Java程序中,如何进行异常设计。

登高而望远 1万+

Java异常的捕获和处理

(1)当JDK中的异常类型不能满足程序的需要时,可以自定义异常类。(2)使用自定义异常一般有如下步骤:1)定义异常类,并继承Exception类或者RuntimeException类。2)编写异常类的构造方法,并继承父类的实现,常见的构造方法有如下4种形式。3)实例化自定义异常对象,并在程序中使用throw抛出。自定义GenderException异常super();} }构造方法super();super();

qq_45734913的博客 4574

Java中的异常以及对异常的处理

Java代码在运行时期发生的问题就是异常。在Java中,把异常信息封装成了一个类,当出现问题时,就会创建异常类对象并抛出异常相关的信息(如异常的位置、原因等)异常的继承体系      在Java中使用Exception类来描述异常。Exception类及其子类是Throwable的一种形式,它用来表示Java程序中可能会产生的异常,并要求对产生的异常进行合理的异常处理。      Exceptio...

hepei_i的博客 2187

Java中的异常及处理

上述错误信息的含义是,dept部门表的name字段的值 就业部 重复了,因为在数据库表dept中已经有了就业部,之前设计这张表时,为name字段建议了唯一约束,所以该字段的值是不能重复的。最终抛给框架之后,框架就会返回一个JSON格式的数据,里面封装的就是错误的信息,但是框架返回的JSON格式的数据并不符合我们的开发规范。刚才的复习已经回顾了什么是异常了,但是无法为这个世界上的全部问题都提供异常类,如果企业自己的某种问题,想通过异常来表示,那就需要自己来定义异常类了。而此时,会发现,网络请求报错了。

m0_50345460的博客 1032

Java 中的异常和处理详解

假设B模块完成自己的逻辑需要调用A模块的方法,如果A模块发生异常,则B也将不能完成而发生异常,但是B在抛出异常时,会将A的异常信息掩盖掉,这将使得异常的根源信息丢失。Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常。异常是在执行某个函数时引发的,而函数又是层级调用,形成调用栈的,因为,只要一个函数发生了异常,那么他的所有的caller都会被异常影响。.

m0_72885838的博客 684

【Java】异常处理详解

本文详细介绍了Java异常处理机制,内容包括异常概述、分类、处理方式及最佳实践。异常分为Error(不可恢复的系统级错误)和Exception(可处理的程序异常),其中Exception又分为受检异常(必须处理,如IO操作)和非受检异常(编程错误,应修复代码)。文章重点讲解了try-catch-finally结构、多重catch块、自定义异常创建及异常链的使用方法,并提供了异常处理的最佳实践建议,帮助开发者编写更健壮的Java程序。

小昭的博客 1132
上一篇: 面对对象的super认识和this的区别
下一篇: 线程的创建方法和介绍
gudfdd
博客等级 码龄8年 1粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值