Java异常详解
2022/3/1 22:52:04
本文主要是介绍Java异常详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Java异常详解
文章目录
- Java异常详解
- 前言
- 一、概念
- 二、异常分类
- 三、异常产生和传递
- 四、异常的处理
- 声明异常throws
- throw关键字
前言
开发中会遇到各种问题程序运行不下去,我们称之为异常,我们也可以不合逻辑的运行抛出异常
提示:以下是本篇文章正文内容,下面案例可供参考
一、概念
程序在运行时的时候,发生的不正常事件,就是所谓的异常。
二、异常分类
Throwable:可抛出的,一切错误或异常的父类,位于java.lang包中。
Error:JVM、硬件、执行逻辑错误,不能手动处理。
常见错误: StackOverflowError、OutOfMemoryError等。
Exception:程序在运行和配置中产生的问题,可处理。
- RuntimeException:运行时异常,可处理,可不处理。
- CheckedException:检查时异常,必须处理
代码如下(示例):
/** 4 * 异常和错误的区别: 5 */ 6 public class Demo { 7 public static void main(String[] args) { 8 //int[] arr = new int[3]; 9 //System.out.println(arr[0]); 10 //数组越界异常,可以处理 11 //System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3 12 13 //错误: 14 int[] arr2 = new int[1024*1024*1024]; 15 16 17 } 18
检查异常:由编译器能够检查出来的异常。外部原因导致的异常,程序中必须处理。
- FileNotFoundExcetpion
- IOException
- SQLException
运行时异常:RuntimeException,也叫非受检异常,编译器不检查的异常。往往一些代码的逻辑问题。 - NullPointerException
- ArrayIndexOutOfBoundsException//数组越界
- ArithemicException
- ClassCastException
- NumberFormatException
代码如下(示例):
3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.text.SimpleDateFormat; 6 import java.util.Date; 7 8 public class Demo5 { 9 public static void main(String[] args) { 10 11 int i=10; 12 int j = 0; 13 try{ 14 //int div =i/j;//运行时异常,运行的过程中抛出的异常, 15 //可能抛出异常的代码 16 //System.out.println("div:"+div); 17 int k = Integer.parseInt("xxxx"); 18 }catch (ArithmeticException e){ 19 //异常的处理 20 //System.out.println(); 21 e.printStackTrace(); 22 }catch (NumberFormatException e){ 23 e.printStackTrace(); 24 } 25 26 System.out.println("end..........."); 27 28 29 //SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd"); 30 //sdf.parse("wowowwo");//检查异常 31 32 // File file = new File("c:\\a.jpg"); 33 // FileInputStream fis = new FileInputStream(file); 34 35 36 } 37 }
三、异常产生和传递
异常产生
- 自动抛出异常:当程序在运行时遇到不符合规范的代码或结果时,会产生异常。
- 手动抛出异常:语法:throw new 异常类型(“实际参数”)。
- 产生异常结果:相当于遇到 return语句,导致程序因异常而终止。
异常传递
- 异常的传递:按照方法的调用链反向传递,如始终没有处理异常,最终会由JVM进行默认异常处理(打印堆栈跟踪信息)。
- 受查异常:throws 声明异常,修饰在方法参数列表后端。
- 运行时异常:因可处理可不处理,无需声明异常。
四、异常的处理
捕获异常:try,catch,finally
语法规则:
try{ 2 //可能产生异常的代码 3 }catch(异常类型1 e){ 4 //捕获异常的处理 5 }catch(异常类型2 e){ 6 //捕获异常的处理 7 }finally{ 8 //无论程序是否产生异常,此处的代码一定会被执行。 9 //比如说:释放资源,删除临时文件等。。。 10 }
注意点:
1.一个try可以匹配多个catch语句
2.如果try中产生了异常对象,那么会跳出try,进到相应的catch中处理异常,从上向下匹配。
3.如果是多个catch语句,那么小的异常捕获处理写前面,大的异常捕获处理写后面。
4.finally是可选的.
声明异常throws
方法级别上,向外抛出异常。
方法的声明上就要通过throws关键字声明抛出异常:
public static void test1(int i,int j)throws NullPointerException{ 2 3 } 4 [修饰符1,修饰符2.。。] 返回值类型/void 方法名(参数列表) 异常的声明{ 5 6 }
按照方法的调用链反向传递,如始终没有处理异常,最终会由JVM进行默认异常处理(打印堆栈跟踪信息)。
运行时异常的抛出,不一定要处理
检查异常的抛出,必须处理
Exception和RuntimeException的区别
1.RuntimeException是Exception的子类。
2.Exception包含了受检异常,所以抛出Exception以及受检异常时,代码中一定要给与处理。如果抛
出的是RuntimeException(运行时异常,非受检)以及它的子类异常,程序中不一定非要处理。
3.重写的时候,子类不能抛出比父类更大的异常
throw关键字
throw和throws的区别
1.throws,用于定义方法的时候,声明该方法向外抛出异常。
2.throw,主动抛出一个异常的对象。打断程序的执行。配合trycatch,或者throws来使用。
Exception exception = new Exception("我自定义的异常。。"); 2 3 try { 4 throw exception;//自己主动抛出的异常 5 } catch (Exception e) { 6 e.printStackTrace(); 7 } 8 9 System.out.println("main......end.....");
这篇关于Java异常详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?