JavaSE异常Exception处理方法以及自定义

 更新时间:2024年07月18日 09:39:39   作者:鸽鸽程序猿  
网络异常exception是指在网络通信过程中出现的异常情况,这些异常可能是由于网络连接不稳定、网络故障、服务器故障、网络拥堵等原因导致的,这篇文章主要给大家介绍了关于JavaSE异常Exception处理方法以及自定义的相关资料,需要的朋友可以参考下

异常是什么

异常就是程序在进行时的不正常行为,就像之前数组时会遇到空指针异常(NullPointerException),数组越界异常(ArrayIndexOutOfBoundsException)等等。

在java中异常由类来表示。

异常的分类

异常有一个顶层类Throwable;

Throwable派生出两个子类Error,Exception;

Error指的是Java虚拟机无法解决的严重问题,例如递归时一直开辟栈,导致栈溢出的错误。

Exception也分为两种异常:编译时异常和运行时异常。

编译时异常,这种异常顾名思义是在编译时候就会发生,这种异常要在程序中捕获声明才能让程序通过。

例如在比较器文章这篇中要实现clone方法时要通过throws关键字声明CloneNotSupportedException异常才能正常使用。

运行时异常,这种异常全在(RunTimeException)这个类和其子类之下,编译通过,运行报错,这种异常可以交给JVM处理。

异常的处理方法

异常的处理一般使用throw、try、catch、finally、throws这五个关键字。

throw抛出异常

在程序执行时,该语句引发异常,此时就可以通过throw抛出异常来告诉程序员原因。

一般格式为throw new 异常类名("异常产生的原因"); 例如我们进行方法传参为数组时参数是null抛出空指针异常:

public void printArray(int[] array){
	if(null == array){
		throw new NullPointException("数组传参为空null");
	}else{
		//
	}
}

注意事项:1.异常的抛出必须是在方法的内部

2.一旦异常抛出成功之后,在该语句之后的代码就不会执行了。就像上面写的else里面的语句不会执行了。

3.抛出的异常必须是Exception的或其子类,编译时异常必须在后续代码中处理,运行时异常可以交给JVM处理。

异常的声明

异常的声明就是告诉这个方法会报哪些异常,然后在这个方法内部不用对异常处理,让后面使用这个方法时对异常进行处理。
一般格式:

修饰符 返回值类型 方法名(参数表列) throws 异常类型1,异常类型2...{
 
}

注意事项:1.格式不能变,一定是将声明放在参数表列后面,可以多个异常同时声明

2.声明的异常必须是Exception的或其子类。如果声明的异常是具有父子类关系,只声明父类也可以

异常的捕获和处理

使用try-catch语句来对异常进行捕获和处理。

使用格式:

try{
	//会产生异常的代码
}catch(异常类型1 e){
	//对异常的处理代码
}catch(异常类型2 e){
	//对异常的处理代码
}

注意事项:

1.像前面一样如果try中抛出异常后还有代码就不会执行,

2.catch语句之间就像if-else语句一样,只会执行其中一个异常,

3.如果try中抛出异常被catch捕获并处理了那就会执行try-catch之后的语句,如果没有捕获到就不会执行

4.如果两个异常是父子类,一定要把子类异常catch放在前面

5.如果两个异常处理方式一样也可以用单竖杠 | 来处理catch(异常类型1 | 异常类型2 e){}但是这样就不知道具体是哪个异常了。

finally

这个语句是跟try-catch语句一起用的,这个语句的特点就是比catch先执行,里面常放一些资源关闭代码

格式:

try{
	//会产生异常的代码
}catch(异常类型1 e){
	//对异常的处理代码
}catch(异常类型2 e){
	//对异常的处理代码
}finally{
	//资源关闭代码
}

try 或者 catch 中如果有 return 会在这个 return 之前执行 finally. 但是如果

finally 中也存在 return 语句, 那么就会执行 finally 中的 return, 从而不会执行到 try 中原有的 return.

自定义异常类

异常本质就是一个类,然后继承于已有的异常类。在写自己的异常类时类名最后一个单词使用Exception更加规范

格式:

class NameException extends 异常类{
	//
}

自定义异常类时一般继承Exception 或 RunTimeException。

继承Exception默认是编译时异常,

继承RunTimeException是运行时异常,

在自定义异常类中一般会实现如下的一个构造方法,来报出什么原因导致异常:

public NameException(String message) {
        super(message);
   }

总结 

到此这篇关于JavaSE异常Exception处理方法以及自定义的文章就介绍到这了,更多相关JavaSE异常Exception内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • OpenJDK源码解析之System.out.println详解

    OpenJDK源码解析之System.out.println详解

    这篇文章主要介绍了OpenJDK源码解析之System.out.println详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • spring mybatis环境常量与枚举转换示例详解

    spring mybatis环境常量与枚举转换示例详解

    这篇文章主要为大家介绍了spring mybatis环境常量与枚举转换示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • 在IntelliJ IDEA中配置Git过程

    在IntelliJ IDEA中配置Git过程

    本文介绍了在IntelliJ IDEA中配置Git的全过程,包括安装Git、在IDEA中配置Git路径以及在项目中启用Git,具体步骤分为三步:安装Git,配置IDEA中的Git路径,并在项目中启用Git,最后,还介绍了基本操作与进阶配置,如提交代码、推送/拉取代码、设置Git用户名等
    2026-04-04
  • Java中的常用输入输出语句的操作代码

    Java中的常用输入输出语句的操作代码

    这篇文章主要介绍了Java中的常用输入输出语句的操作代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Spring Boot整合Mybatis Plus和Swagger2的教程详解

    Spring Boot整合Mybatis Plus和Swagger2的教程详解

    这篇文章主要介绍了Spring Boot整合Mybatis Plus和Swagger2的教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Spring Security无法调用接口错误的问题解决

    Spring Security无法调用接口错误的问题解决

    记录一下之前在写程序的时候遇到的问题,Spring Security无法调用接口错误的问题,本文就来介绍一下解决方法,感兴趣的可以了解一下
    2023-08-08
  • Spring 请求之传递 JSON 数据的操作方法

    Spring 请求之传递 JSON 数据的操作方法

    JSON 就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此 JSON 本质是字符串,主要负责在不同的语言中数据传递和交换,这篇文章主要介绍了Spring请求之传递JSON数据的相关知识,需要的朋友可以参考下
    2025-04-04
  • spring cloud config分布式配置中心的高可用问题

    spring cloud config分布式配置中心的高可用问题

    本文给大家介绍spring cloud config分布式配置中心的高可用问题,通过整合Eureka来实现配置中心的高可用,需要的朋友参考下本文
    2018-01-01
  • Java实现自动把报表插入到word文档中

    Java实现自动把报表插入到word文档中

    在很多业务场景中需要在 word 文档中嵌入报表,这篇文章主要为大家介绍了如何使用Java实现自动把报表插入到word文档中,需要的可以参考下
    2024-12-12
  • java实现桌球小游戏

    java实现桌球小游戏

    这篇文章主要为大家详细介绍了java实现桌球小游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07

最新评论