首页 > 编程语言 >JAVA:异常

JAVA:异常

时间:2024-07-21 15:54:25浏览次数:18  
标签:JAVA 自定义 处理 抛出 代码 执行 异常

    一.异常概述

1.异常体系

根类:子类描述
java.lang.Throwabljava.lang.ErrorError:严重错误Error,无法通过处理的错误,只能事先避免,例如:栈内存溢出错误,服务器宕机,数据库崩溃...好比绝症。

java.lang.Exception

(常用)

Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎。

2.异常分类

在(Exception)中:

编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)

运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会编译器检测(不报错)。(如数学异常)

二.异常的产生

1.throw:它用来抛出一个指定的异常对象。throw new 异常类名(参数);

作用:throw用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。

三.异常处理

1.声明处理异常:

声明处理异常:使用throws关键字将异常标识出来, 表示当前方法不处理异常,而是提醒给调用者, 让调用者来处理....最终会到虚拟机,虚拟机直接结束程序,打印异常信息。

修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2...{  // 可以抛出一个,也可以多个}

2.捕获处理异常

3.2 捕获处理异常 捕获处理异常:对异常进行捕获处理 , 处理完后程序可以正常向下执行。

try{     编写可能会出现异常的代码

}catch(异常类型  e){

    处理异常的代码

}

执行:1.try中的代码出现了异常,就会执行catch里面的代码,程序还会继续往下执行

2.try中的代码没有出现异常,就不会执行catch里面的代码,程序还会继续往下执行

Throwable类中定义了一些查看方法:

public String getMessage():获取异常的描述信息,原因(提示给用户的时候,就提示错误原因。

public String toString():获取异常的类型和异常描述信息(不用)。

public void printStackTrace():打印异常的跟踪栈信息并输出到控制台。

3.finally 代码块

finally:有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。

try{

   可能会出现异常的代码

}catch(异常的类型 变量名){

   处理异常的代码或者打印异常的信息

}finally{

   无论异常是否发生,都会执行这里的代码(正常情况,都会执行finally中的代码,一般用来释放资源)

}

四.异常注意事项

运行时异常被抛出可以不处理。即不捕获也不声明抛出。

如果父类的方法抛出了多个异常,子类覆盖(重写)父类方法时,只能抛出相同的异常或者是他的子集。

父类方法没有抛出异常,子类覆盖父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出

当多异常分别处理时,捕获处理,前边的类不能是后边类的父类在try/catch后可以追加finally代码块,其中的代码一定会被执行,通常用于资源回收。

    

五.自定义异常

异常类如何定义

1. 异常类如何定义自定义一个编译期异常:

自定义类 并继承于java.lang.Exception。

2.自定义一个运行时期的异常类:

自定义类 并继承于java.lang.RuntimeExceptio

标签:JAVA,自定义,处理,抛出,代码,执行,异常
From: https://blog.csdn.net/2401_86102746/article/details/140586904

相关文章

  • Java 随笔记: 集合与泛型
    文章目录1.集合框架概述2.集合接口2.1Collection接口2.2List接口2.3Set接口2.4Map接口3.集合的常用操作3.1添加元素3.2删除元素3.3遍历元素3.4判断大小3.5判断是否为空4.迭代器4.1迭代器的作用4.2迭代器的使用4.3迭代器与增强for循环4.4迭代器......
  • 一文搞懂Java中的双亲委派
    一天正在宿舍里忙着写代码。突然,老师给我布置了一项新任务:优化他正在开发的项目中的类加载机制。我对类加载器了解不多,开始翻阅各种资料,逐渐了解了Java中的类加载器机制。尤其是当读到双亲委派模型时,脑海中豁然开朗。仿佛看到了类加载请求在层层递进、逐步传递的画面,像极了树状......
  • Java语言概述
    1.常用的DOS命令进入DOS操作窗口:按下Windows+R键盘,打开运行窗口,输入cmd回车,进入到DOS的操作窗口。常用指令:操作说明盘符名称:盘符切换,如:E:表示切换到E盘dir列出当前目录下的文件及文件夹cd目录进入指定的单级目录cd目录1\目录2\...进入指......
  • 1、异常与中断的概念及处理流程
     1中断的引入1.1妈妈怎么知道孩子醒了妈妈怎么知道卧室里小孩醒了?①时不时进房间看一下:查询方式简单,但是累②进去房间陪小孩一起睡觉,小孩醒了会吵醒她:休眠-唤醒不累,但是妈妈干不了活了③妈妈要干很多活,但是可以陪小孩睡一会,定个闹钟:poll方式要浪费点时间,但是可以继......
  • JavaEE初阶(1)—— 计算机理论常识
    目录一.JavaEE发展历程二.计算机相关知识2.1计算机发展史2.2 冯诺依曼结构(VonNeumannArchitecture)2.3CPU1.cpu做得好的公司2.cpu架构3.cpu的核心参数4.cpu的寄存器(Register)2.4指令 1.概念 2.指令表3.指令格式4.指令执行阶段 2.5操作系统概述一.J......
  • Java基础之异常
    异常1.概述​代码出现了不正常的现象,在Java中每一个异常都是java一个一个的类,或者叫做异常对象2.异常体系说明Throwable:Error:错误类似于人得了癌症,不能通过处理让代码变正常,必须得重新写Exception:异常(所有异常的父类)类似于人得了感冒可以治疗,可以通过......
  • Java 基础学习第一节:初始 Java 及其安装
    第一节001.大项目贯穿学习能力动手能力耐心和毅力表达能力002.学习中碰到问题怎么办找同桌找同学找项目经理找讲师003.学习Java的窍门多想公司需要什么?熟练掌握这个东西的人.如何才能熟练呢?多练练学Java就像学车,天天看别人开车,自己无论怎么看都不会,必须亲自......
  • ChatGPT:Java的双冒号运算符(::)
    ChatGPT:Java的双冒号运算符(::)为什么说双冒号运算符(::)通过引用现有的方法或构造器,简化了Lambda表达式的定义在Java中,双冒号运算符(::)是用于方法引用的符号。方法引用是一种更简洁、更直观的方式来表示Lambda表达式。它通过引用现有的方法或构造器,简化了Lambda表达式的定义......
  • 计算机课设——基于Java web的超市管理系统
    smbms_java_web基于Javaweb的超市管理系统,数据库课程设计1.引言是一个基于JavaWeb连接MySQL的小项目。超市管理系统(smbms)作为每个计算机专业的大学生都是一个很好的练手项目,逻辑层次分明,基础功能包括用户的登录和注销,用户和供应商以及订单信息的增删查改的基础功能......
  • 【前端】JavaScript入门及实战21-25
    文章目录21关系运算符22编码23相等运算符24条件运算符25运算符优先级21关系运算符<!DOCTYPEhtml><html><head><title></title><metacharset="utf-8"><scripttype="text/javascript"> /* 通过关系运算符可以比较两个值之间的大小关系, 如果关......