首页 > 编程语言 >java异常分类和处理方式

java异常分类和处理方式

时间:2024-07-13 17:26:31浏览次数:14  
标签:Exception java String 抛出 分类 catch array 异常

异常的概念

首先,java中的异常是以类的形式存在的,也就是说,每一种异常实际上都是一种特殊的类。
这里根据百度开发者社区的定义可以验证:Java异常体系主要由Throwable类及其子类构成。Throwable是所有错误和异常的超类,它有两个直接子类:Error和Exception。(其实不严格的来说有三个,Exception可以分为检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions))
那我们先分析一下异常的类型

Error

表示严重问题,比如内存溢出这种,这类错误通常是由JVM本身的问题引起的,无法预测或处理。所有一般也不会去捕获这个异常。

Exception

Checked Exception 检查型异常

要求在被一个方法抛出来时,调用这个方法的代码就必须处理这些异常,否则就会报错比如IOException和SQLException这些。

Unchecked Exceptions 非检查型异常

非检查型异常指的是像空指针这种,由程序员人为逻辑错误或者程序bug导致的异常。

异常的三种处理方式

1,异常抛出,像这里抛出一个自定义的异常

String[] array = new String[2];
int check = 2;
if(check>=2){
	throw new MyException("数组越界");
}

2,异常捕获(tyr-catch)

try {
	String[] array = new String[2];
	array[2] = "123";
} catch (ArrayIndexOutOfBoundsException e) {
	System.out.println("发生了数组越界,位置: "+e.getMessage());
}

3,异常声明,像这个方法在后面的编写里可能会抛出某些异常,但是现在并不想在内部处理,就可以用throws关键字先抛出。

public void test2() throws Exception{}

五个关键字

1,try

用于定义一个代码块,通常是可能会抛出异常的代码,一般连接着catch和finally

2,catch

定义一个包含处理这个异常情况的代码,每个catch都指定了一种或者多种异常类型,如果抛出的错误与捕获的类型相匹配则执行。

3,finally

定义一个无论如何都会执行的代码块,通常用于检查连接或者释放资源。

Try-catch-finally举例:

int len = 2;
String[] array = new String[len];
try {
	array[len] = "123";
	System.out.println(array[len]);
} catch (ArrayIndexOutOfBoundsException e) {
	System.out.println("发生了数组越界,位置: "+e.getMessage());
	System.out.println("末尾应该是len-1");
} finally {
	System.out.println("无论如何,这段代码都会执行,会有语句输出。");
}

4,throw

抛出异常,可以抛出一个新的异常也可以重写抛出一个已经捕获过的异常,这样后面在捕获异常的时候,如果类型相同,就会使得控制流转移。像这样,如果后面捕获(Exception e),那么就会跳转到处理语句块。

throw new Exception("一个新的错误");

5,throws

不同于前一个,这是声明一个方法可能会抛出的异常,提醒后续调用的人可以把这个方法的异常抛出或者捕获处理。

public class FileException {
    public static String FileException(String file) throws IOException{
        return file;
    }
}

标签:Exception,java,String,抛出,分类,catch,array,异常
From: https://blog.csdn.net/qq_55332182/article/details/140353489

相关文章

  • 【java深入学习第1章】深入探究 MyBatis-Spring 中 SqlSession 的原理与应用
    前言在使用MyBatis进行持久层开发时,通常会与Spring框架集成,以便更好地管理事务和依赖注入。在MyBatis-Spring集成中,SqlSession是一个非常重要的概念。本文将详细介绍SqlSessionTemplate和SqlSessionDaoSupport,并提供相关的代码示例。一、SqlSessionTemplateSqlSessio......
  • Java学习第二周
    学习java第二周了,对java这门语言有了更深的理解。1.基本概念面向对象的程序是由对象组成的,每个对象包含对客户公开的特定功能部分和隐藏的实现部分。程序中的很多对象来自标准库,还有一些是自定义的。究竟是自己构造对象,还是从外界购买对象完全取决于开发项目的预算和时间。但是,......
  • Java中的CyclicBarrier详解
    Java中的CyclicBarrier详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!一、CyclicBarrier简介CyclicBarrier是Java并发包中的一个工具类,用于实现多线程任务分解成多个阶段并行执行的场景。它允许一组线程互相等待,直到所有线程都达到某个公共屏障点(b......
  • 简单的机票预定系统(纯Java)
    功能介绍        通过控制台界面交互,主要实现了乘客购票以及退票流程,管理员对航班信息的管理。    界面如下:项目结构介绍所有文件如下说明:其中entity包下放了Flight、Order、User三个实体类,Data是整个项目存放的数据(通过ArrayList来存储数据,没有使用......
  • Java中的接口多继承详解
    Java中的接口多继承详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java中,类的多继承是不被允许的,但是接口的多继承却是被允许的。接口多继承可以使得类具备多种行为,并且解耦合代码,有助于提升代码的可维护性和可扩展性。本文将详细介绍Java中接口多......
  • Java中的类与对象详解
    Java中的类与对象详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java编程中,类与对象是两个最基本的概念。类是对象的模板,对象是类的实例。理解和掌握类与对象的概念是学习Java的基础。本文将详细介绍Java中的类与对象,包括类的定义、对象的创建、构......
  • Java中的静态内部类详解
    Java中的静态内部类详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在Java中,内部类是一种将类定义在另一个类内部的结构。而静态内部类(StaticNestedClass)则是使用static修饰的内部类。静态内部类有其独特的特性和用途,理解静态内部类可以帮助我们编......
  • Java中的多线程详解
    Java中的多线程详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!多线程编程是Java开发中一个非常重要的主题。在多线程环境下,程序可以同时执行多个任务,从而提高程序的执行效率。本文将详细介绍Java中的多线程,包括线程的创建、线程的生命周期、线程的同......
  • Java中的线程通信详解
    Java中的线程通信详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在多线程编程中,线程之间的通信是一个重要且复杂的主题。为了确保多线程程序的正确性和效率,线程需要能够互相通信并协调工作。Java提供了多种方式来实现线程间的通信,如wait()、notify......
  • Java中标识符和关键字
    1.标识符publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,world");}}上述代码中在publicclass后面的HelloWorld称为类名,main称为方法名,也可以将其称为标识符,即:在程序中由用户给类名、方法名或者变量所取的名字。【......