java异常处理机制(代码片段)

abcdjava abcdjava     2022-12-01     725

关键词:

1. 异常是指在程序的运行过程中所发生的不正常的情况或者发生错误,导致中断正在运行的程序。

2. 异常处理语句try - catch, 如果try代码块中捕获到异常,则到catch代码块中处理,否则跳过忽略catch代码块。(良好的编程习惯,在异常捕获机制的最后书写catch(Exception e)(父类,顶极异常)捕获未知的错误);

1 try
2 //关键字,只能有一个try语句可能发生异常的代码片段
3 
4 catch(Exception e)
5 //列举代码中可能出现的异常类型,可有多个catch语句当出现了列举的异常类型后,在这里处理,并有针对性的处理
6 

 

3. Exception 根据是否处理分为两种情况。

1)RuntimeException:运行时异常。不要求程序必须做出处理。是所有运行时异常的父类。

2)CheckedException:检查时异常。要求程序必须处理,不处理编译不通过。

 1 public class Test01 
 2     public static void main(String[] args) 
 3         // 运行时异常
 4         Scanner sc = new Scanner(System.in);
 5         // runtime exception
 6         int r = sc.nextInt();
 7         System.out.println("r = "+ r);
 8         
 9         // 检查时异常
10         SimpleDateFormat df = new SimpleDateFormat();
11         try 
12             Date date = df.parse("2019");
13          catch (ParseException e) 
14             e.printStackTrace();
15         
16     
17 

3)finally块:finally块定义在catch块的最后(所有catch最后),且只能出现一次(0-1次), 无论程序是否出错都会执行的块! 无条件执行!通常在finally语句中进行资源的消除工作,如关闭打开的文件,删除临时文件等。

finally 总是执行,常用进行收尾类工作。

 1 public static void main(String[] args) 
 2         Scanner sc = new Scanner(System.in);
 3         System.out.println("请输入第一个数:");
 4 
 5         int num1 = 0;
 6         int num2 = 0;
 7 
 8         try 
 9             num1 = sc.nextInt();
10 
11             System.out.println("请输入第二个数:");
12             num2 = sc.nextInt();
13 
14             int r = num1 / num2;
15             System.out.println("num1/num2 = " + r);
16          catch (Exception e) 
17             System.out.println("程序出现异常");
18          finally 
19             System.out.println("不管是否出现异常,finally都执行");
20         
21 
22         System.out.println("程序正常结束");

 

特殊情况:

[1] finally不执行的情况:System.exit(0) 正常推出jvm,finally不会执行。

[2]catch可以省略,变成try…finally块。

 

4. 常见的运行时异常

ArithmeticException:数学计算异常。比如除数为0

InputMismatchException:输入不匹配异常

ArrayIndexOutofBoundsException:数组下标越界异常。

NullPointException:空指针异常,对象没有初始化就使用时,jvm会抛出该异常

IllegalArgumentException:非法参数异常。

ClassCastException:强制类型转换异常。

NumberFormatException:数字格式化异常。比如把“abc”格式化成数字。

常见的检查时异常:

ClassNotFoundException:类没有被发现异常。

SQLException:数据库相关异常

IOException:IO操作异常

ParseException:解析错误异常

FileNotFoundException:文件未发现异常。

 

5. 运行时异常和检查时异常的区别

运行时异常:包括RuntimeException及其所有子类。不要求程序必须对它们作出处理,即使没有使用try-catch或throws进行处理,仍旧可以进行编译和运行。如果运行时发生异常,会输出异常的堆栈信息并中止程序执行。常见的运行时异常有: NullPointerException、IllegalArgumentException、ClassCastException、NumberFormatException、ArrayIndexOutOfBoundsException、ArithmeticException;

Checked异常(非运行时异常):编译时检查,除了运行时异常外的其他异常类都是Checked(都是可检查异常)异常。程序必须捕获或者声明抛出这种异常,否则出现编译错误,无法通过编译。处理方式包括两种:通过try-catch捕获异常,通过throws声明抛出异常从而交给上一级调用方法处理。

6. throw关键字:用于主动抛出一个异常

除了系统自动抛出异常外,有些问题需要开发者手动抛出异常,通知调用方法去解决时,会将这个错误告知外界,而告知外界的方式就是throw异常(抛出异常)catch语句中也可抛出异常。方法通常有参数,调用者在调用我们的方法帮助解决问题时,通常会传入参数,若我们方法的逻辑是因为参数的错误而引发的异常,应该抛出,若是我们自身的原因应该自己处理。

 1  2 public class Student 
 3     private String name;
 4     private String gender;
 5 
 6     public String getName() 
 7         return name;
 8     
 9 
10     public void setName(String name) 
11         this.name = name;
12     
13 
14     public String getGender() 
15         return gender;
16     
17 
18     public void setGender(String gender) throws Exception
19         if(gender.equals("男") || gender.equals("女"))             
20             this.gender = gender;
21         else 
22             throw new Exception("性别不合法!");
23         
24     
25 
26     public Student(String name, String gender) 
27         super();
28         this.name = name;
29         this.gender = gender;
30     
31 
32     public Student() 
33         super();
34     
35 
 1 public class Test01 
 2     public static void main(String[] args)
 3         Student stu = new Student();
 4         stu.setName("二哈");
 5         try 
 6             stu.setGender("xxx");
 7          catch (Exception e) 
 8             System.out.println(e.getMessage());
 9         
10     
11 

 

7. throws关键字

当一个方法可能存在异常,而此时自身又无法更好的处理,可以交给外界处理。此时用throws声明并抛出异常。

开发者可以根据需要声明检查时异常(Exception或者非运行时异常)和运行时异常(RuntimeException或其子类),如果调用处也不知道如何处理异常,可选择继续声明异常,我们把这个过程称为异常上抛。

 1 public class Test01 
 2 
 3     public static int div(int a, int b) throws Exception
 4         int r = 0;
 5         r = a / b;
 6         return r;
 7     
 8 
 9     public static void main(String[] args) throws Exception
10         
11         //【1】 调用处知道如何处理!
12         /*
13         try 
14             Test01.div(10, 0);
15          catch (Exception e) 
16             e.printStackTrace();
17         
18         */
19         
20         // 【2】调用处也不知道如何处理
21         Test01.div(10, 0);
22         
23     
24 

注意事项:
  注意throw和throws关键字的区别:抛出异常和声明抛出异常。
  不能在main方法上throws,因为调用者JVM直接关闭程序。

 

java异常处理机制(代码片段)

1.异常是指在程序的运行过程中所发生的不正常的情况或者发生错误,导致中断正在运行的程序。2.异常处理语句:try-catch,如果try代码块中捕获到异常,则到catch代码块中处理,否则跳过忽略catch代码块。(良好的编程习惯,在异... 查看详情

java异常处理机制(代码片段)

目录1.1Java异常的概念与分类1.1.1引入异常(数组越界)1.1.2 Throwable1.2Java异常捕获处理1.3异常处理finally语句使用1.3.1引入finally关键字1.3.2 采用finally释放Scanner资源1.3Java异常抛出处理1.3.1主动抛出异常1.4自定义异常类1.5综... 查看详情

java异常处理机制(代码片段)

目录1.1Java异常的概念与分类1.1.1引入异常(数组越界)1.1.2 Throwable1.2Java异常捕获处理1.3异常处理finally语句使用1.3.1引入finally关键字1.3.2 采用finally释放Scanner资源1.3Java异常抛出处理1.3.1主动抛出异常1.4自定义异常类1.5综... 查看详情

java之uncaughtexceptionhandler异常处理机制(代码片段)

JAVA之UNCAUGHTEXCEPTIONHANDLER异常处理机制1.JAVA1.5版本出现的 UNCAUGHTEXCEPTIONHANDLER当线程由于未捕获异常突然终止时调用的处理程序的接口。当一个线程由于未捕获异常即将终止时,Java虚拟机将使用thread.getuncaughtexceptionhandler()查询... 查看详情

java之uncaughtexceptionhandler异常处理机制(代码片段)

JAVA之UNCAUGHTEXCEPTIONHANDLER异常处理机制1.JAVA1.5版本出现的 UNCAUGHTEXCEPTIONHANDLER当线程由于未捕获异常突然终止时调用的处理程序的接口。当一个线程由于未捕获异常即将终止时,Java虚拟机将使用thread.getuncaughtexceptionhandler()查询... 查看详情

异常处理机制详解(代码片段)

#前言本文主要是对Java异常处理机制的阐述,了解Java的异常机制的设计和分类,及Java异常有哪些坑,如何在自定义异常类时避免采坑。#异常机制分类 异常情况是指阻止当前方法或作用域继续继续执行的情况。在Java中异常也... 查看详情

异常处理机制(代码片段)

1.异常处理1.1概念:异常就是程序在运行中出现不正常的情况并终止了程序的运行。JAVA中通过异常处理机制解决异常问题,从而保持程序继续运行;因此JAVA是一门比较稳定的语言。异常处理机制的关键字:try...catch...finally/try...c... 查看详情

java异常处理机制(代码片段)

...f0c;它阻止了程序按照程序员的预期正常执行,这就是异常,那么异常发生之后怎么办,Java提供了更加优秀的解决办法-异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻... 查看详情

教妹学java:异常处理机制(代码片段)

“二哥,今天就要学习异常了吗?”三妹问。“是的。只有正确地处理好异常,才能保证程序的可靠性,所以异常的学习还是很有必要的。”我说。“那到底什么是异常呢?”三妹问。“异常是指中断程序正常执行的一个不确定... 查看详情

java异常处理机制详解(代码片段)

java异常处理机制详解程序很难做到完美,不免有各种各样的异常。比如程序本身有bug,比如程序打印时打印机没有纸了,比如内存不足。为了解决这些异常,我们需要知道异常发生的原因。对于一些常见的异常,我们还可以提... 查看详情

java中的异常处理机制(代码片段)

文章目录异常处理机制编译时异常处理机制异常处理方式一异常处理方式二异常处理方式三运行时异常处理机制异常处理机制异常的默认处理流程如下:默认会在出现异常的代码那里自动的创建一个异常对象:ArithmeticException... 查看详情

java异常处理(代码片段)

java异常简介程序运行过程中出现不可以预料的错误和bug,导致程序中止或产生了错误的结果,这个现象就叫异常一、为什么要有异常处理机制?Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证... 查看详情

kotlin协程硬核解读(5.java异常本质&协程异常传播取消和异常处理机制)(代码片段)

...客】,未经博主允许不得以任何形式转载文章目录1.异常的本质1.1操作系统、程序、JVM、进程、线程1.2异常方法调用栈1.3java异常处理机制1.4小结2.Android异常处理机制3.协程异常3.1挂起函数的异常3.2throw&resumeWithException(e)3.3协... 查看详情

异常处理(代码片段)

packagecn.kecheng;importjava.util.Scanner;/**异常:异常是指在程序的运行过程中所发生的不正常的情况,它会中断正在运行的程序异常处理机制:java中通过异常处理机制为程序提供异常处理的能力,保持程序继续运行而不中断!异常处理:... 查看详情

java异常处理机制(代码片段)

...f0c;它阻止了程序按照程序员的预期正常执行,这就是异常,那么异常发生之后怎么办,Java提供了更加优秀的解决办法-异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻... 查看详情

java异常处理机制(代码片段)

...f0c;它阻止了程序按照程序员的预期正常执行,这就是异常,那么异常发生之后怎么办,Java提供了更加优秀的解决办法-异常处理机制。异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻... 查看详情

springmvc--springmvc异常处理机制(代码片段)

1.SpringMVC异常处理机制1.1异常处理的思路1.2异常处理两种方式使用SpringMVC提供的简单异常处理器SimpleMappingExceptionResolver实现Spring的异常处理接口HandlerExceptionResolver自定义自己的异常处理器1.3简单异常处理器SimpleMappingExceptionResolvSpr... 查看详情

java中异常处理机制(代码片段)

文章目录一认识常见异常1除0异常(算术异常)2数组越界异常3空指针异常二异常的体系三异常的用法(try-catch语句)1概述与代码理解2注意事项3finally语句4异常的传递5throw与throws关键字四自定义异常注意事项结语一认识常见... 查看详情