前言
exception是java中的完美机制之一。方法在完成过程中由于某种原因而不能正常的达到目的,这样的现象称为异常。
本文主要介绍异常的处理方式,异常的分类,自定义异常。
正文
异常的处理方式
1.抛异常:
在发生的方法行为中,将异常传递出去,交由其他地方处理。
1)语法
修饰符 放回值类型 方法名(参数列表) throws 异常类名,异常类名{
//类体
}
}catch(异常类名 变量名){
//异常的处理,替代方案
}
2.捕捉异常
异常在方法中发生后,立即对其采取处理。
1)语法
try{
//语句块
}catch(异常类名 变量名){
//异常的处理,替代方案
}catch(异常类名 变量名){
//异常的处理,替代方案
}finally{
//代码块
}
注:
1)捕捉异常的优先顺序
catch块中是需要捕捉的异常,捕捉按照小类型到大类型的顺序捕捉,不能倒置;
如果捕捉的异常存在继承关系,应该先捕捉小类型,再捕捉大类型的异常。若不存在继承关系,那么无捕捉的优先顺序。
2)try,catch,finally的个数
try只能有一个;catch可以有,也可以没有;finally也可以有没有;
但catch和finally至少出现一个。
3)catch块的执行顺序
如果在捕捉异常的过程中,若有多个catch块,按照从上到下的顺序执行catch块;
若有一个catch块被执行,其他catch就不会被执行;finally总是会被执行。
小结
抛异常和捕获异常的区别:
1)捕获异常:当前行为发生异常之后,能够寻求替代方案,继续完成当前的行为。
2)抛异常:当行为发生异常之后,在当前行为中,无法寻找替代方案,需要将异常抛出。
产生异常
1)语法
throw new 异常类名();
注:
1))有很多的异常在API中已产生
1))根据异常采取的处理方式
a) try{
//代码块
}catch(异常类型 变量名){
}catch(异常类型 变量名){
}finally{
}
b)抛异常:在方法定义中声明throws异常类名。
补充:发生异常,代码以后的执行顺序。
1)如果使用try{}catch 方式处理异常,当前代码位于try块中;如果当前代码发生了异常后,在try块且位于当前代码之后的代码不会被执行,直接进入catch块中;执行完catch块,继续执行后面的代码。
2)若使用throws处理异常时,当前代码在执行过程中发生异常之后,位于当前代码以后的所有语句都将不会被执行。
例子
<script src="https://code.csdn.net/snippets/274731.js" type="text/javascript"></script>
异常分类
自定义的异常
目的:
能够给用户提供更准确的提示信息,改善用户体验。
1)如何自定义异常
1))需要继承异常父类(Exception或RuntimeException)
2))提供对应的构造器
3))在对应的构造器调用父类对应的构造器
2))自定义异常示例:
<script src="https://code.csdn.net/snippets/274898.js" type="text/javascript"></script>
总结
1.异常的选择:
跟内存有关的异常,通常使用运行时异常;
跟内存以外有关的异常,通常使用编译时异常。
2编译时异常与运行时异常的语法检查区别
1).编译时异常
.编译时异常,如果没有产生异常,就不能去捕捉。在IDE中,如果产生捕捉时将提示如此信息:
Unreachable catch block for ActivationException. This exception is never thrown from the try statement body。
示例图片:
2).运行时异常
1))运行时异常,可以在没产生异常时,在代码中可以进行捕获。
2))因为运行时异常不参与语法检查;
3))运行时异常无论在代码中产生异常或者处理异常都可通过语法检查。
3。编译时异常的javac过程的语法检查步骤:
1)检查代码中是否有异常产生
2)检查异常是否被处理。
注:
以上两步缺一不可,如果缺失就会提示语法错误。
分享到:
相关推荐
- **异常层次**:Java中的异常类层次结构。 - **未检查的异常**:运行时异常,不需要显式处理。 - **自定义异常**:通过继承`Exception`类或其子类来创建自定义异常。 - **抛出异常**:通过`throw`语句主动抛出异常...
【宋红康java笔记】是一份综合性的Java学习资料,由知名编程教育者宋红康编撰。这份压缩包文件包含了大量的Java编程知识点,旨在帮助初学者和有经验的开发者深入理解和掌握Java语言的核心概念与高级特性。以下是根据...
### Java学习笔记之异常 #### 一、异常概念与理解 异常是指在程序运行过程中发生的非预期事件,这些事件可能会导致程序无法正常执行。在Java中,异常处理是一种非常重要的机制,它允许开发者以优雅的方式处理错误...
这份"非常好的java笔记"无疑是初学者踏入这个领域的宝贵资源。笔记由培训班的专业老师编写,内容详细且全面,旨在帮助初学者系统地学习和理解Java的基础知识。 首先,Java基础部分会涵盖变量、数据类型、运算符、...
### 毕向东Java笔记知识点总结 #### 第一章:编程基础 1. **Java的特性和优势**: - **简单性**:Java的设计哲学是“使编程变得简单”。 - **面向对象**:Java完全支持面向对象编程概念如封装、继承和多态。 - ...
【标题】"java读书笔记笔记笔记笔记笔记笔记" 暗示了这是一份关于Java编程语言的学习笔记,可能包含了作者在阅读Java相关书籍时所做的重要记录和理解。笔记通常涵盖了语言的基础概念、核心特性、类与对象、内存管理...
2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 2020-4-10 java笔记 枚举类 2020-4-10 java 注解(Annotation) 2020-4-11 Java 集合 2020-4-15 java 泛型...
《狂神说Java笔记资料》是一份全面涵盖Java开发基础知识的文档集,旨在帮助学习者系统地掌握Java编程。这份笔记包含多个章节,每个章节都深入讲解了一个特定的主题,覆盖了从初学者到进阶开发者必备的知识点。 1. *...
【Java笔记内容概览】 1. **基础语法**:涵盖变量、数据类型、运算符、流程控制(条件语句、循环语句)、数组、字符串等基础知识。 2. **面向对象**:讲解类、对象、封装、继承、多态等核心概念,以及构造函数、...
这份"java笔记java笔试题 java面试题"的资源无疑是准备Java程序员的笔试和面试时的重要参考资料。以下是一些关键的Java知识点,这些内容可能会在笔记或面试中出现: 1. **Java基础**:Java的基础语法包括数据类型...
你还将学习到如何使用类、对象和接口,理解面向对象编程的基本原理,这是Java的核心特性之一。 在函数和方法部分,笔记会介绍如何定义和调用函数,理解参数传递,以及封装和重载的概念。此外,异常处理(try-catch-...
《李兴华Java实战经典笔记》是一份深入探讨Java编程技术的宝贵资料,由知名IT教育专家李兴华编撰。这份笔记集合了他在教学和实践中积累的丰富经验,旨在帮助学习者掌握Java的核心概念、设计模式以及实战技巧。通过这...
【狂神说Java系列笔记.rar】是一份涵盖了2020年7月份的全面Java学习资源,其中包含了从基础到高级的多个主题。这个压缩包是针对Java开发者的宝贵资料库,尤其对于初学者和想要深入理解Java技术体系的人而言极具价值...
下面将详细解析与“java笔记 异常 多线程”相关的知识点,包括异常处理的基本概念、如何捕捉和抛出异常、自定义异常的创建,以及这些知识点在实际编程中的应用。 ### Java异常处理 Java异常处理是Java语言的一个...
1. **Java基础**:介绍Java语言的基本语法,如变量、数据类型、运算符、控制流程(条件语句、循环)、数组、字符串以及异常处理。这些基础知识是理解和编写任何Java程序的基石。 2. **面向对象编程**:深入讲解Java...
【标题】"韩顺平java笔记完整版.zip(无笔记,只是代码)"指的是一个包含韩顺平老师Java教学视频中所有代码的压缩文件。这个压缩包不包含笔记,而是专注于提供实际的编程示例,使得学习者可以直接查看和学习Java编程...
"java笔记全套下载" 提供的可能是一系列详细的学习资料,涵盖了从基础到高级的Java知识体系,帮助学习者系统地掌握这门语言。 Java的基础知识包括: 1. **Java语法**:了解变量、数据类型、运算符、流程控制(如if-...
这份"java笔记"涵盖了从基础到进阶的各种Java知识,旨在帮助学习者系统地掌握这门语言。以下是对笔记内容的详细解读: 1. **Java基础知识**: - **语法特性**:Java遵循C++的语法结构,但更加简洁和安全,如自动...
《狂神说JAVA的所有笔记》是一份全面且深入的JAVA学习资源,包含了JAVA语言的核心概念、进阶技术以及实际应用的方方面面。这份笔记是作者在深入研究JAVA编程过程中积累的宝贵经验,旨在帮助读者系统性地掌握JAVA这门...
“尚硅谷JAVA基础笔记”涵盖了Java语言的基础知识,包括语言概述、基本语法、面向对象概念、封装、继承和多态,以及一些关键概念如形参与实参、属性与局部变量、构造器、this关键字、包和MVC设计模式的使用。...