Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

异常

作者头像
晚上没宵夜
发布于 2020-03-10 01:13:04
发布于 2020-03-10 01:13:04
95300
代码可运行
举报
运行总次数:0
代码可运行

1. 异常

  • 程序在运行过程中难免会发生错误,为此Java提供了异常处理机制来帮助程序员检查可能出现的错误,对于可能出现的异常都需要预先进行处理
  • 异常也是一个对象,包含了错误信息和处理方法,有的需要手动捕获或抛出称为受检异常(Checked Exception),有的虚拟机自动进行捕获,编译时期通过,处理称为免检异常
  • 异常继承图:

其中Exception及其子类(不包括RuntimeException)是必须捕获的异常

Error及其子类,RuntimeException及其子类是不需要捕获的

  • 常见异常

异常名

解释

VirtualMachineError

虚拟机异常

ReflectionError

反射异常

Error

IOException

IO流异常

DataFormatException

日期格式日常

Exception

ArithmeticException

算术异常

IndexOutOfBoundsException

下标越界

NullPointerException

空指针

ClassCastException

类型转换异常

RuntimeException

2. 异常处理

捕获

try catch finally,把要捕获异常的语句放到try里面

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
    
    try {
        
        ExceptionTwo();             //会发生算数异常
        System.out.println("try");
        
    }catch (RuntimeException e) {
        
        System.out.println("run");
        e.printStackTrace();        //打印方法调用栈
        
    } catch (Exception e) {
        
        System.out.println("ex");
        
    }finally{
        
        System.out.println("finally");
        
    }
    
    System.out.println("我是异常下面的语句");
    
}

static void ExceptionTwo() {
    ExceptionOne();
}


static void ExceptionOne() {
    int a = 1/0;        //算数异常
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
run
java.lang.ArithmeticException: / by zero
    at exception.Test.ExceptionOne(Test.java:36)
    at exception.Test.ExceptionTwo(Test.java:31)
    at exception.Test.main(Test.java:11)
finally
我是异常下面的语句
  • 发生异常后不执行异常后面的语句,直接跳转catch,最后一定会执行finally(除非用exit,不然return之后也会执行finally里面的语句)
  • 可以有多个catch语句,但要子类放前面,父类放后面,但如果异常不是继承关系,catch条件里面可以用 '|' 逻辑运算符
  • 当执行完finally会继续往finally下面的语句执行
  • 调用顺序从打印语句来看是从下往上,main函数调用ExceptionTwo,ExceptionTwo调用ExceptionOne,ExceptionOne里面有算数异常

抛出

throws在方法声明中抛出,throw在方法体内抛出

当某个方法抛出异常时,如果当前方法没有捕获,异常就会被抛到上层调用方法,直到遇到某个try ...catch被捕获为止

创建异常一般使用匿名函数方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) {
    
    try {
        ExceptionOne();         //这里被向上抛出的异常需要捕获,或者继续向上抛出
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}


static void ExceptionOne() throws FileNotFoundException {
    File file = new File("D:test.txt");
    FileOutputStream fs = new FileOutputStream(file);//会抛出文件异常,但在方法声明中用了throws向上抛出
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public static void main(String[] args) throws Exception {
    
    int a = 1; 
    if (a < 2){
        throw new Exception("a小于2了");   //一般继承Exception,然后使用构造函数
    }
}

打印

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Test {
    
    public static void main(String[] args) {
        
        Logger logger = Logger.getLogger(Test.class);
        
        try {
            
            int a = 1/0;        //会发生算数异常
            
        }catch (RuntimeException e) {
            
            logger.error("测试异常",e);     //  使用log4j日志系统
            
        }
    }
}
  • logger.error(Object message); //只输出信息
  • logger.error(Object message,Throwable a); //输出堆栈
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-12-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Java】认识异常
3️⃣数组下标越界异常(ArrayIndexOutOfBoundsException)
喜欢做梦
2024/11/25
1480
【Java】认识异常
《JAVA SE》认识异常
我们发现, 一旦 try 中出现异常, 那么 try 代码块中的程序就不会继续执行, 而是交给 catch 中的代码来执行. catch 执行完毕会继续往下执行。
VIBE
2022/12/02
4150
Java基础10:全面解读Java异常
这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!(关注公众号后回复”资料“即可领取 3T 免费技术学习资源以及我我原创的程序员校招指南、Java学习指南等资源)
程序员黄小斜
2019/04/07
5510
04 - JavaSE之异常处理
2.throw new someExpresion("错误原因"); 表示的是手动抛出异常。 **
Daotin
2018/08/31
4980
04 - JavaSE之异常处理
《JavaSE》---18.<异常处理>
1. Throwable:是异常体系的顶层类,其派生出两个重要的子类, Error 和 Exception
用户11288958
2024/09/24
1610
《JavaSE》---18.<异常处理>
JAVA零基础小白学习免费教程day12-异常&Log4J
异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:
张哥编程
2024/12/13
1740
JAVA零基础小白学习免费教程day12-异常&Log4J
JavaSE异常
注:调用声明抛出异常的方法时,调用者必须对该异常进行处理,或者继续使用throws抛出
用户9645905
2023/04/12
3730
JavaSE异常
Java常用工具之异常
在程序开发中,异常指不期而至的各种状况。它是一个事件,当发生在 程序运行期间时,会干扰正常的指令流程。
慕白
2020/01/02
7340
Java常用工具之异常
深入理解 java 异常处理机制
原文 https://blog.csdn.net/hguisu/article/details/6155636
猿芯
2021/05/27
7160
深入理解 java 异常处理机制
Java基础系列6:深入理解Java异常体系
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。
说故事的五公子
2019/11/15
6490
异常(Java)
1. Throwable : 是异常体系的顶层类,其派生出两个重要的子类 , Error 和 Exception
用户10921393
2024/01/23
3230
Java异常详解及如何处理
作者:lulipro 来源:www.cnblogs.com/lulipro 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?。 Java提供了更加优秀的解决办法:异常处理机制。 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。 Java中的异常可以是函数中的语句执行
Tanyboye
2018/07/02
1.3K0
大话Java异常
@toc 异常 异常的概述 --- 异常就是不正常的意思,Java语言中主要是指程序在运行阶段产生的错误 Throwable(可抛出的,可扔出的) - java.lang.Throwable 类是Java程序所有错误或异常的超类 - 主要有两个字类 - Error - Error主要描述比较严重的错误 - 无法通过编程来解决的重大的错误 - Exception - Exception主要m描述比较轻量级的错误 - 可以通过编程来解决 Exception类的
ruochen
2021/05/15
7620
大话Java异常
Java异常详解
推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。 https://www.captainbed.cn/f1
鲜于言悠
2024/06/01
2190
Java异常详解
Java复习 【知识改变命运】第七章
当执行到num1/num2时候就会抛出一个异常,ArithmeticException,当抛出异常后程序就崩溃掉,不会执行下面的代码了
用户11319080
2024/11/21
860
Java复习 【知识改变命运】第七章
[ Java学习基础 ] Java异常处理
一、异常概述   异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。   异常发生的原因有很多,通常包含以下几大类: 用户输入了非法数据。 要打开的文件不存在。 网络通信时连接中断,或者JVM内存溢出。   这些异常有的是因为用
Kevin_Zhang
2018/05/22
2.1K0
Java程序员必备:异常的十个关键知识点
异常是指阻止当前方法或作用域继续执行的问题。比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异常。
捡田螺的小男孩
2020/04/14
1K0
认识JAVA中的异常
1 异常的概念:在 Java 中,将程序执行过程中发生的 不正常行为 称为异常,
用户11305962
2024/10/09
2390
认识JAVA中的异常
基础篇:深入解析JAVA异常
Java异常面试题: https://thinkwon.blog.csdn.net/article/details/104390689
潜行前行
2020/12/11
4280
基础篇:深入解析JAVA异常
深入理解java异常处理机制
 1. 引子        try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。 <span style="background-color: rgb(255, 255, 255);">package T
大闲人柴毛毛
2018/03/09
1K0
深入理解java异常处理机制
相关推荐
【Java】认识异常
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验