Java中的异常体系

一步一步搭建S32K14x的AutoSar项目----S32DS 代码工程的搭建 一步一步搭建S32K14X的AutoSar项目----S32DS代码工程的搭建 阅读详情

Java中的异常体系

在开发过程中难免会遇到各种各样的异常,如何处理异常直接影响程序或系统的稳定性,有时在线上仅仅忘记处理一个空指针异常都有可能引起整个项目的崩溃,所以了解开发中的异常是至关重要的!

概念

异常通常是指某个方法不能按照正确的方式完成时,可以通过抛出异常的方式退出该方法,在异常中封装了方法执行过程中的错误信息及原因,然后调用方在获取该异常后可根据业务的情况选择处理异常或者继续抛出该异常。

在方法执行过程中出现异常时,Java异常处理机制会将代码的执行权交给异常处理器,异常处理器根据在系统中定义的异常处理规则执行不同的异常处理逻辑(抛出异常或捕捉处理异常)

异常分类

在Java中,Throwable是所有错误或异常的父类,又可以分为Error和Exception,常见的如下图所示。

Error 指Java程序运行错误,如果程序在启动时出现Error,则启动失败;如果程序运行过程中出现Error,则系统将退出程序。出现Error是系统的内部错误或资源耗尽,Error不能在程序运行过程中被动态处理,一旦出现Error,系统能做的只有记录错误的原因和安全终止。

Exception 致 Java程序运行异常,在运行中的程序发生了程序员不期望发生的事情,可以被Java异常处理机制处理。Exception也是程序开发中异常处理的核心,可分为RuntimeException(运行时异常)和CheckedException(检查异常),如下图所示

  • RuntimeException(运行时异常):指在Java虚拟机正常运行期间抛出的异常,RuntimeException可以被捕获并处理,如果出现此情况,我们需要抛出异常或者捕获并处理异常。常见的有NullPointerException、ClassCastException、ArrayIndexOutOfBoundsException等
  • CheckedException(检查异常):指在编译阶段Java编译器检查CheckedException异常,并强制程序捕获和处理此类异常,要求程序在可能出现异常的地方通过try catch语句块捕获异常并处理异常。常见的有由于I/O错误导致的IOException、SQLException、ClassNotFoundException等。该类异常通常由于打开错误的文件、SQL语法错误、类不存等引起。

异常处理方式

异常处理方式有抛出异常和使用try catch语句块捕获异常两种方式。

(1)抛出异常:遇到异常时不进行具体的处理,直接将异常抛给调用者,让调用者自己根据情况处理。抛出异常的三种形式:throws、throw和系统自动抛出异常。其中throws作用在方法上,用于定义方法可能抛出的异常;throw作用在方法内,表示明确抛出一个异常。

//2: 使用throws在方法上抛出异常
public static void main(String[] args) throws Exception {
    String str = "hello world";
    int index = 10;
    div(10,0);
    if(index >= str.length()){
        //1:使用throw 在方法内抛出异常
        throw new StringIndexOutOfBoundsException();
    }else {
        str.substring(0,index);
    }
}

public static  void div(int a,int b) {
    System.out.println(a/b);
}

(2)使用try catch捕获并处理异常:使用费try catch 捕获异常能够有针对性的处理每种可能出现的异常,并在捕获到异常后根据不同的情况做不同的处理。其使用过程比较简单:用try catch语句块将可能出现异常的代码抱起来即可。

try{
 //具体的业务逻辑实现
}catch (Exception e){
 //捕获异常并处理
}

throw 和 throws的区别

  • 位置不同:throws作用在方法上,后面跟的是异常的类,而throw作用在方法内,后面跟的是异常的对象。
  • 功能不同:throws用来声明方法在运行中可能出现的异常,以便调用者根据不同的异常类型预先定义不同的处理方式;throw用来抛出封装了异常信息的对象,程序在执行到throw时后序的代码将不再执行,而是跳转到调用者,并将异常信息抛给调用者。也就是说throw后面的语句块将无法被执行(finally语句块除外!)

面试问题

记得在微博一面的时候面试官就问了我这个Java异常体系中的问一个demo问题,如下所示:

    public  void test01() {
        int i = 1;
        int divid = 0;
        try {
            int n = i / divid;
            System.out.println("走的try"+0);
        } catch (Exception e) {
            System.out.println("走的catch"+1);
            //return returnSttat(i);
        } finally {
            System.out.println("走的finally"+2);;
        }
    }

在异常的情况下会输出什么呢?

在正常的情况下会输出什么呢?

【AI大模型:认知升级】1、全面解析AI大模型:从起源到发展脉络与应用价值 AI大模型是具备超大规模参数(千亿至万亿级)、海量训练数据(TB级)和强迁移学习能力的基础模型。其技术特征包括Transformer架构革新、大数据预训练范式及参数规模超过临界值后的能力涌现。发展历程经历了语言模型突破(2018-2020)、多模态融合(2021-2023)和架构创新(2023至今)三波浪潮,遵循数据、算力、算法协同进化规律。底层驱动因素包括能力涌现机制、算力基础设施突破和应用场景拓展,正在重构产业价值链。通过"知识星系""认知 阅读详情

相关推荐

构建高可用CephFS NFS网关:NFS-Ganesha与RADOS集群的深度整合

本文详细介绍了如何构建高可用的CephFS NFS网关,通过NFS-Ganesha与RADOS集群的深度整合,实现高效文件共享。文章涵盖核心架构、部署实战、性能调优及避坑指南,帮助用户解决Ceph客户端兼容性问题,提升存储访问效率。特别强调高可用设计,确保服务稳定性,适用于金融、电商等高要求场景。

weixin_26976635的博客 254

【Java基础】Java中的异常体系

Java中的异常体系 在开发过程中难免会遇到各种各样的异常,如何处理异常直接影响程序或系统的稳定性,有时在线上仅仅忘记处理一个空指针异常都有可能引起整个项目的崩溃,所以了解开发中的异常是至关重要的! 概念 异常通常是指某个方法不能按照正确的方式完成时,可以通过抛出异常的方式退出该方法,在异常中封装了方法执行过程中的错误信息及原因,然后调用方在获取该异常后可根据业务的情况选择处理异常或者继续抛出该异常。 在方法执行过程中出现异常时,Java异常处理机制会将代码的执行权交给异常处理其,异常处理器根据在系统中定义

代码届的小白的博客 275

山景BP10_128DBG开发板ADC_Key驱动

最近在学习山景BP10_128DBG开发板,想使用开发板上的按键。看了看原理图和之前用过的按键好像有点不一样。常见的按键都是判断IO口是否被拉低或拉高来判断按键是否被按下。山景BP10_128DBG开发板上的按键是ADC按键,每个按键按下之后ADC的采样值是不同的,通过ADC采样回来的值进而判断哪个按键按下。这种方式核心思想就是用一个ADC通道来节约IO口,对于IO紧张的芯片是一个不错的解决思路。

weixin_56646002的博客 1311

try catch 语句中有return 的各类情况

在牛客上做java题时遇到过多到关于try catch语句的问题,看了很多答案解析,在这里记录一下。首先给出一道题目:下面代码的运行结果为?public class test { public int add(int a,int b) { try { return a+b; }catch(Exception e){ System.out.println("catch语句块")...

Dxy的博客 6万+

sentinel——SLC数据下载、DEM数据下载拼接、精密轨道数据下载方法

Sentinel——SLC数据下载、DEM数据下载、精密轨道数据下载方法 SLC数据下载 网址:https://search.asf.alaska.edu DEM数据下载 1 手动下载 http://srtm.csi.cgiar.org/srtmdata/ 3.在SARscape中使用下载好的DEM 将下载好的DEM放在软件默认下载DEM路径下(默认路径是C:\Users<用户名&g...

u011322358的博客 2万+

U24时钟信号上升下降沿出现非单调性--简单分析

交换机U24时钟信号上升下降沿出现非单调性--简单分析

qq_45185504的博客 1132

Java中的异常总结详解(异常类型、声明异常、抛出异常、捕获异常)

Java 异常解析前言 前言

YING—country的博客 3万+

redhawk:avgTW maxTW minTW minWC的区别

分析dynamic ir drop报告时会遇到这几个值,avgTW maxTW minTW minWC,如下图。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 696

java 异常处理 return,求大神!!!!java 异常处理中return的意思

该楼层疑似违规已被系统折叠隐藏此楼查看此楼在方法中使用return 就是返回到方法的调用方,而在main 方法中使用,返回到JVM(虚拟机),如果把上面的main 方法中的代码放在一个方法中,如下public class C {public static void Method(){int i=0;try{for(i=0;i<10;i++){try{if(i%3==0) throw ne...

weixin_30647853的博客 210

基于Simulink的PR(比例谐振)控制器在单相整流中的应用

本文详细介绍了基于Simulink的单相整流系统中PR(比例谐振)控制器的设计与实现方法。首先阐述了PR控制器相较于传统PI控制器的优势,能够有效消除交流信号跟踪中的稳态误差。接着系统讲解了PR控制器的传递函数原理、实用型设计(带带宽)及参数整定方法。通过Simulink建模步骤,包括主功率电路搭建、电压外环PI设计、电流指令生成、PR控制器实现(推荐MATLAB Function方法)和SPWM调制等关键环节。仿真对比显示PR控制在电流跟踪精度(THD仅1.9%)、功率因数(0.998)和动态响应(突变恢

amy_mhd的博客 692

解决com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60027, active 20, maxActive 20错误

全网详细解决com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 60027, active 20, maxActive 20, creating 0, createErrorCount 24的错误

念兮为美 417

Java中的异常体系是怎样的

下面我们从整体结构、分类、常见异常和错误等方面详细分析 Java 的异常体系。Java 中的异常体系是一个层次化的结构,所有异常和错误都继承自。通常表示外部因素导致的异常,如文件不存在、网络中断等。表示严重的系统错误,通常与程序逻辑无关,程序无法处理。必须在代码中显式处理(捕获或抛出),否则编译不通过。不需要在代码中显式处理,编译时不会检查。表示程序无法处理的严重错误。JVM 无法找到类的定义时抛出。:表示程序无法处理的严重错误。:表示程序可以处理的异常。尝试加载不存在的类时抛出。

完全体 753

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Java 异常体系

在 Java 中,异常(Exception)是指程序运行过程中出现的异常情况或错误,它们会中断程序的正常执行流程。为了确保程序的健壮性,Java 提供了一个完整的异常处理机制。Java 的异常体系是以ThrowableError(错误)表示程序中严重的错误,通常是系统级别的问题,比如内存不足、虚拟机崩溃等。这些错误通常是不可恢复的,程序不应该也无法通过代码处理它们。Exception(异常)表示程序中可以被捕获和处理的异常情况。包括运行时异常和受检异常(Checked Exception)。

SAFE20242034的博客 991

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java 中的异常体系

异常

weixin_46508088的博客 660

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

java异常体系

用示意图表示如下:​​主要:finally 异常中总能执行的代码区final 用于定义常量的关键字finalize() 垃圾回收,该方法是系统调用,不用程序员手动调用。

qq_63964907的博客 872

Java—异常体系

Java的异常体系是Java语言中用于处理程序运行过程中可能出现的错误的机制。通过异常处理,程序可以在遇到问题时自动反馈,从而避免程序崩溃。Java异常体系中包含两大类:错误(Error)和异常(Exception)。

m0_74154813的博客 1154

java异常体系-创建自己项目异常体系[精]

java异常体系-创建自己项目异常体系 1.创建项目异常体系简述 在代码运行中我们会通过异常类来捕获异常信息帮助我们定位问题,查找问题的出现原因。但是java提供的异常类就像是一个模板,不能抛出项目自定义的异常信息出现。因此我们可以根据项目的需求创建一套符合自身项目的异常体系,在运行出错时候抛出我们需要定制化的异常信息。 2. 创建项目异常体系实例 2.1.创建自定义异常类步骤 创建一个包用...

Bruce小鬼 1331

Java异常体系

Java相关知识点

2301_81096101的博客 1021

java异常体系_Java异常体系

Java异常体系异常的分类Throwable对象可以分为两组。uncheck异常一组是unchecked异常,异常处理机制往往不用于这组异常,包括:Error类通常是指Java的内部错误以及如资源耗尽的错误。当Error(及其衍生类)发生时,我们不能在编程层面上解决Error,所以应该直接退出程序。Exception类有特殊的一个衍生类RuntimeException。RuntimeExcepti...

weixin_39921224的博客 212

Java异常体系概述

Java的异常体系结构 Java异常体系的根类是 Throwable, 所以当写在java代码中写throw抛出异常时,后面跟的对象必然是Throwable或其子类的对象。 其中Exception异常是指一些可以恢复的异常, 例如常见的NullPointerException空指针异常。 Error指的是一些致命的错误,无法通过程序代码手段恢复的异常,例如OutOfMemoryError内存溢出错误。 unchecked异常 在上图中除了RuntimeException、Error及其子类都是属于unch

cainiao1412的博客 318

Java异常体系总结

Java异常体系知识点总结 这段时间进行了对Java异常体系的学习,这里总结一些比较经典的问题; 1. 异常结构体系 所有的异常都是由Throwable继承而来 由于程序错误导致的异常为RuntimeException,即运行时异常,运行时异常不需要捕捉,即运行时异常出现时能通过编译,但不能通过运行; 异常分为受查异常和非受查异常,RuntimeException和Error属于非受查异常,其...

eternal_yy 463

Java之异常体系

Exception 类是所有异常类的父类。

SOS_suyan的博客 2308

java基础:异常体系

异常体系图如下:Throwable类是所有异常*(Exception)和错误(Error)的超类,两个直接子类为Error和Exception。所有的异常的顶级父类都是Exception,Exception又分为运行时异常(非受检异常)和非运行时异常(受检异常)。

2301_78125917的博客 1454
上一篇: Java基础面试高频问题
下一篇: 学会这几招,年底晋升不慌了
Javaesandyou
博客等级 码龄5年 742粉丝 563原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值