首页 > 编程语言 >Java异常处理

Java异常处理

时间:2023-04-19 23:46:04浏览次数:28  
标签:Java 处理 抛出 try finally 子句 catch 异常

异常的产生、处理

捕捉异常

 try { 可能有异常的代码序列 } [catch(异常类型1 变量) { 处理的代码1 }]* [finally { 必然执行的代码 }]?   

说明:

1. 必须至少有一个catch或finally,不能只有try的部分。 try-catch-finally 语句可以进行嵌套。

2. 当在 try子句、catch子句、finally子句  中某行代码发生异常时(且这个异常没有被处理掉),程序均不会再执行该子句中发生异常那一行后面的代码,然后将异常从本子句中抛出。

3. try子句中抛出来的异常,会被后续的一系列catch中的异常类型进行依次匹配,如果与抛出的异常类型是赋值兼容的,就进入这个catch子句进行处理(相当于这个catch子句吃掉了这个异常)。

4. catch子句中新抛出来的异常不会再被这个catch子句后面的catch匹配,因为这些ctach只会匹配前面的try中抛出的异常。

5. 在任何情况下(不管try、catch是否执行异常),都会执行finally语句。

6. try子句、catch子句、finally子句 均可以抛出异常,其中特殊的是try子句抛出的异常可能会被后面的catch子句吃掉,而 catch子句和finally子句抛出的异常则必然还会继续向更外层抛出。这些没有被吃掉的异常,在执行了finally子句后,才会向更外层抛出,最终抛出的那个异常是最近产生的那个异常。(比如前面已经有异常没处理了,并且在finally中又产生了新的异常,则最后抛出的是finally中产生的这个异常)

 

在代码中抛出异常:  throw [异常对象名 | new 异常类型名(...)] ;     这个throw类似于return,一旦执行,其后面的代码将不再运行。

在方法声明时抛出异常:    .... 方法名(...) throws 异常类型名1 [, 异常类型名n]*  [ ;|{方法体} ]    表示这个方法中可能有异常会抛出,调用这个方法的地方必须捕捉这些异常或继续向更外层抛出。

 

异常类型

所有自定义的异常类型,必须是 Throwable 类的直接或间接子类。大部分情况下,程序员自定义类型都是继承 Exception 。

Error类型及其子类一般表示系统或环境错误,这种错误一般是程序员处理不了的。

运行时异常: 是指在运行的时候才可能发生的异常,如 除数为0,访问null的属性,数组下标越界...。一般是程序设计不当造成,可以根据报错提示完善程序。

检查型异常: 也称非运行时异常,是指那些由程序员手动调用  throw语句 或 在方法上使用throws抛出的异常处理。这类异常仍然发生在程序运行时,但编译器会做静态检查,要求必须处理所有可以出现异常的地方。

 

标签:Java,处理,抛出,try,finally,子句,catch,异常
From: https://www.cnblogs.com/xiafl/p/17334915.html

相关文章

  • Java中抽象类详解
    在编程领域中,抽象类是一种至关重要的概念。它可以让我们更好地进行模块化设计,提高代码的复用性和可扩展性。只有全面掌握抽象类,才能在编程世界中游刃有余、与众不同。让我们一起踏上抽象类的学习之旅,创造出更加优秀的程序吧。在Java中,抽象类是一种用于按需定制的基础类,它帮助开发者......
  • Java基础知识点API之System
    一:System的介绍总的来说,System类提供了一些与系统相关的方法二:System类的常见方法publicstaticvoidexit(intstatus)终止当前运行的虚拟机publicstaticvoidlongcurrentTimeMil(isc)返回当前系统的时间毫秒值形式publicstaticvoidgc()运行垃圾回收器publicstaticString......
  • Java字符串
    StringJava中的字符串是String类的实例,字符串常量"xxxx" ,系统会自动创建一个对应的String类对象。注意,Java中的字符串并不是数组,字符串和数组没有直接关系。字符串对象一旦被创建,则其内容是不可变的。语法: String变量名[= ["xxxx"|newString("xxxx")] ]?;  ......
  • EasyDL自然语言处理
    自然语言处理(NaturalLanguageProcessing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日......
  • java学习日记20230415-LinkedHashSet源码
    LinkedHashSet全面说明:LinkedHashSet是HashSet子类;底层是一个LinkedHashMap,底层维护了一个数组和双向链表根据元素的hashCode值来决定元素的位置,同时使用链表维护元素的次序,使得元素看起来是以插入的顺序保存的不允许添加重复元素维护了一个hash表和双向链表,每个节点有pre和......
  • 18 同步与异常(四) 原子操作
    1简介原子操作此操作是不会被打断的2ldrex、strex、teqldrex相对ldr而言此命令多了ex(exclude排除),意为独占eg:将会对ldrr0,r1命令中的r1标记为独占strex相较于str基本功能而言多出清除独占标记eg:strexr2,r0,r1将r0写入r1,并清除r1的独占标记。成功将r2设为0,......
  • java数组
    一维数组的定义、使用Java中的数组是类类型。 类型 [数组名[]|[]数组名]  [= [{值1[,值n]*}|new类型[元素数量]]  ]?;  其中,类型没有任何限制,可以是基本类型也可以是类、接口类型。用new创建数组时,系统会自动初始化数组中的所有元素:数组类型赋值0,布......
  • Java基础——常用类
    常用类字符串String//初始化////Stringstr1=newString();初始化一个新创建的String对象,使其表示一个空字符序列。////String(Stringoriginal)初始化一个新创建的String对象,使其表示与参数相同的字符序列;换句话说,新创建的字符串是参数字符串的副本。////Strin......
  • DNA序列数据处理
    dna序列数据处理通常包括以下步骤:数据预处理:首先,需要对原始dna序列数据进行预处理。其中包括测序错误的纠正、碱基质量过滤和去除低质量序列等。这个阶段是非常重要的,因为数据预处理的质量直接影响后续的特征提取和模型学习。特征提取:在dna序列分析中,会涉及到许多不同的特征......
  • gotenberg+ chromiumly + pdf.js 进行office 文档转换以及预览处理
    日常中office预览是一个比较常见的问题,基于微软的officeonline是一个选择,但是移动端效果不是很好就有pdf以及一些基于生成图片的方案也是不错的,以下是基于gotenberg+chromiumly的一个尝试简单说明gotenberg是基于golang开发的包装了Chromium以及LibreOffice的基于api......