首页 > 编程语言 >Java异常

Java异常

时间:2022-12-24 14:01:09浏览次数:41  
标签:Java try finally catch 执行 异常 log4j

什么是异常?

指程序在运行过程中发生的不正常事件,他会中断程序运行

打印错误信息语句:

System.err.println("");

系统强制退出:

System.exit(1);

异常的关键字:

try 执行可能产生异常的代码

catch 捕获异常

finally 无论是否出现异常,都会执行代码

throw 抛出异常

throws 声明可能抛出的异常

处理异常的步骤:

1、在可能发生异常的地方进行设置try

2、出现异常需要用catch进行捕获处理

3、finally一定会执行,可写可不写

异常产生的过程:

1、程序出现错误会自动生成一个异常对象

2、使用try-catch捕获时自动匹配出现的异常类型

3、根据不同的异常类型进入相应的代码块

语法:try{

//可能产生异常代码

}eatch(异常类型 异常对象){

//处理异常的代码块

}

Exception:所有的异常类型,所有异常的父类

使用try-catch:捕获异常的几种情况:

1、正常执行

在try里面的代码执行完毕后,不执行catch

2、异常情况

在try里面出现错误,直接进入catch代码块处理,处理后继续执行

3、异常类型不匹配

在try里面出现的错误,直接匹配catch直接匹配代码块类型,如果类型未匹配,程序中断

异常报错类型:

Exception 异常层次结构的父类

ArithmeticException 算数错误情形,如以零件除数

ArraylndexOutOfBoundsException 数组下标越界

NullPointerException 尝试访问null大小成员

ClassNotFoundException 不能加载所需要的类

IllegalArgumentException 方法接收到非法参数

ClassCastException 对象强制类型转换出错

NumberFormatException 数字格式转换异常,如果把“abc”转换为数字

try-catch-finally:

语法:try{}catch{}finally{ //无论是否异常,都执行}

不执行的唯一情况:

使用System.exit(1);//程序中断,退出Java虚拟机

在try-catch中return代码中:

1、finally始终会执行

2、先执行catch块,在执行finally块,但是return后面的代码不会执行

3、未出现异常,会执行finally,但是return后面的代码不会执行
4、先执行finally,在执行return

多重catch块的作用:

1、先添加子类异常,在添加父类异常

2、只会匹配一个异常类型,匹配到不在执行其他的catch

3、按顺序进行匹配,从上到下

e.printStackTrace();打印堆栈信息 确定那一行出现错误

在方法中处理异常:

1、在可能出现异常的方法后面声明throws和异常类型(代表可能有异常发生)

2、只要进行声明了异常,使用时必须对此异常进行处理(1、捕获try-catch 2、继续声明异常)

3、一般遇到异常直接进行try-catch处理,不推荐声明

在方法中进行手动声明异常并处理:

1、判断需要(设置)发生异常的条件

2、进行手动声明异常throws new Exception("");

3、对声明的异常进行处理(1、捕获try-catch 2、继续声明异常)

自定义异常类:

1、继承throwable、Exception、RuntimeException类的任意一个

2、在自定义异常类中定义构造方法,使用super("")设置异常类信息

3、在需要声明手动抛出异常的地方thow new 自定义异常类();

使用log4j进行日志记录:

1、给项目添加上log4j.jar文件(复制到项目中右键build path ==》add build path)

2、进行日志文件配置log4j.properties

3、对需要进行记录的代码块添加logger对象 Logger loggle=Logger.getLogger(类名.class);

4、给需要记录的步骤进行记录。 例如:loggle.debug(); loggle.error(); 等

日志共分为4个等级(从大到小):

1、debug

2、info

3、warn

4、error

5、fatal

日志文件log4j.properties配置信息:

1、在控制台输入

2、在文件中输入

1)输入等级

log4j.rootLogger=debug,stdout,logfile

2)输出目的地(文件名)

log4j.appender.logfile=org.apache.log4j.FileAppender (目的地)

log4j.appender.logfile.File=jbit.log (文件名)

3)输出的格式

灵活的布局方式

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

格式

log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l%F%p%m%n

%d:时间格式

%l:执行的代码行

%F:文件名

%p:输出的等级信息

%m%n:换行输出日志信息

标签:Java,try,finally,catch,执行,异常,log4j
From: https://blog.51cto.com/u_15907719/5967136

相关文章

  • JAVA面向对象
    JAVA面向对象面向对象编程(OOP,Object-OrientedProgramming)以类的方式组织代码,以对象的形式封装数据三大特性封装继承多态类与对象的关系类是一种抽象的数据类......
  • JavaScript:类(class)
    在JS中,类是后来才出的概念,早期创造对象的方式是newFunction()调用构造函数创建函数对象;而现在,可以使用newclassName()构造方法来创建类对象了;所以在很多方面,类的使用方......
  • 初识java
    配置完环境之后,让我们来写出第一个Java程序吧!Hello,world!创建一个后缀名为.java的文件,并使用下载好的文本编辑器打开创建一个Java基本类publicclassHello{//基本......
  • 初识Java创建Java运行环境
    三高:高可用、高性能、高并发Java的特性java是一门从C语言/C++作为参考,所改编出的一款全新的计算机语言,其原始名称为:C++--但因一些原因后改名为Javajava是一款面向对象......
  • 第一百一十七篇: JavaScript 工厂模式和原型模式
    好家伙,本篇为《JS高级程序设计》第八章“对象、类与面向对象编程”学习笔记 1.工厂模式工厂模式是另外一种关注对象创建概念的创建模式。它的领域中同其它模式的不同......
  • 【FAQ】HarmonyOS 从API8开始不再支持java作为开发语言,从开发角度看该如何选择
    【关于Java版本】Java版本SDK后续将不会继续演进,最高版本为API7。使用API7及以前的JavaSDK开发的应用可以兼容后续新的HarmonyOS版本。【未来新增功能】HarmonyOS新增功能会......
  • 【FAQ】HarmonyOS 从API8开始不再支持java作为开发语言,从开发角度看该如何选择
    【关于Java版本】Java版本SDK后续将不会继续演进,最高版本为API7。使用API7及以前的JavaSDK开发的应用可以兼容后续新的HarmonyOS版本。 【未来新增功能】HarmonyOS新......
  • 硬核万字长文,深入理解 Java 字节码指令(建议收藏)
    Java字节码指令是JVM体系中非常难啃的一块硬骨头,我估计有些读者会有这样的疑惑,“Java字节码难学吗?我能不能学会啊?”讲良心话,不是我谦虚,一开始学Java字节码和Java......
  • 史上最全!熬夜整理56个JavaScript高级的手写知识点!!专业扫盲!
    本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。前言大家好,我是林三心,基础是进阶的前提,前面我给大家分享了本菜鸟这一年来笔记中的50个JS基础知识点和50个JS高......
  • Java 中 List 分片的 5 种方法!
    这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战前些天在实现MyBatis批量插入时遇到了一个问题,当批量插入的数据量比较大时,会导致程序执行报错,如下图所......