JavaSE基础知识(6)—异常和异常处理
一、异常的理解及体系结构图
1、理解
异常:程序运行过程中发生的不正常现象。
java中的错误:
语法错误
运行异常
逻辑错误
2、体系图
java程序在执行过程中所发生的异常分为两类:
Error:Java虚拟机无法解决的严重问题。如JVM系统内部错误、资源耗尽等严重情况(StackOverflowError、OOM),一般不编写针对性的代码进行处理
Exception:其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。一般有两种解决方法:一是遇到错误就终止程序的运行。另一种方法是由程序员在编写程序时,就考虑到错误的检测、错误消息的提示,以及错误的处理。
常见的异常可分为两类:运行时异常和编译时异常。异常体系图如下,其中红色部分为受检异常,蓝色部分为非受检异常。
二、异常处理的方式
1、抓模型
(1)语法
try{
①
//容易出现异常的代码
②
}catch(异常类型 e){
//处理异常的语句
③
}finally{
//最后一定要执行的语句
④
}
⑤
执行顺序 ★
如果出现了异常: ①③④一定执行,⑤不一定。如果异常被成功捕获,而且没有其他跳转,⑤会执行,否则⑤不执行
如果没有出现异常:①②④一定执行, ⑤不一定。如果没有其他跳转,⑤会执行,否则⑤不执行
(2)好处
①提高了用户体验性
②将正常代码和容易出错的代码实现了分离,提高了代码的阅读性和维护性
③如果成功捕获异常,则起到了拦截异常的作用,异常后面的语句会正常执行
(3)注意事项
①catch块可以省略
②finally块可以省略
③尽量使用多个catch块,代替多个try catch
④不能滥用异常
⑤catch块可以有多个,但如果catch块的异常类型为父类类型,需要将该catch块放在最后
2、抛模型(默认异常处理方式)
(1)语法
修饰符 返回类型 方法名(参数列表) throws 异常类型XX{
}
注意:异常类型XX为方法中容易出现的异常的类型或父类类型
(2)执行特点
将异常抛给调用方,如果调用方不处理,则继续往上抛,直到抛给jvm。而jvm使用的是默认的处理方式。e.printStackTrace()
三、自定义异常
1、语法
class XXException extends Exception或RuntimeException{
public XXException(){}
public XXException(String msg){super(msg);}
}
2、如何使用自定义异常
在需要生成异常对象的地方,添加如下语句:
throw new XXException(异常信息);
四、常见问题解答
1、生成异常对象的方式
2种方式:
方式一:系统自动生成异常对象
针对于:系统定义好的异常类
方式二:手动生成异常对象
针对于:系统定义好的异常类和自定义的异常类
语法:throw new 异常类型(实参);
2、子类重写父类方法的异常说明
子类重写的方法抛出的异常类型可以相同或为子类类型
class Father{
public void run() throws Exception{}
}
class Son extends Father{
public void run() throws Exception{}
}
class Daughter extends Father{
public void run() throws IOException{}
}
3、throws和throw对比
说明 | 放的位置 | 后面跟的东西 | |
throws | 异常处理的方式 | 方法声明的地方 | 异常类型 public void method throws XXXException{} |
throw | 生成异常对象的关键字 | 方法体中 | 异常对象 throw new XXXException(msg) |
JavaSE基础知识(6)—异常和异常处理的更多相关文章
- JavaSE基础知识总结
最近回顾了一下Java的基础知识,决定写成博客梳理一遍,主要是JavaSE部分最基础的知识,适合考前突击,学后回顾,不适合作为初学材料. 简单的列个目录吧: 一.数据类型和运算符 二.流程控制与数组 ...
- JavaSE 基础知识(常识概念 + 基础语法)问答总结/面试题 —— 讲给应届生的 Java 开源知识项目
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- javaSE基础知识(走向编程的门口)— 更新完毕
前言:玩儿编程最重要的一点:不要怕麻烦,感觉是在浪费时间: 能动手绝不哔哔:只要脑袋不傻,编程都是"一看就会,一练就废",开始学的时候,就算再基础的东西都建议手敲一遍 要有囫囵吞枣 ...
- javase基础笔记4——异常/单例和类集框架
继承 extends final关键 多态 是在继承的基础上 接口 interface 异常 exception 包的访问可控制权限 private default protect public 异常 ...
- Spring MVC基础知识整理➣国际化和异常处理
概述 Spring框架为WEB项目提供了国际化以及异常处理机制.所谓的国际化也就是不同国籍,显示不同国籍的语言与符号.异常处理,也就是能够捕获WEB项目下的所有异常信息,并能处理记录这些异常信息机制. ...
- JavaSE基础语法学习-异常
异常 异常指程序运行中出现的不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等. 异常发生在程序运行期间,它影响了正常的程序执行流程. 比如说,你的代码少了一个分号,那么运行出来结果是提示是 ...
- JavaSE基础知识(4)—数组的应用
一.数组的特点.好处及使用步骤 1.数组的好处 特点:相当于用于保存一组元素的容器好处: 1.提高代码的简洁性和扩展性,且同时开辟多个空间,提高了效率 2.分类存储,且空间是连续的,容易查找 2.数组 ...
- JavaSE基础知识(3)—流程控制结构
一.顺序结构 1.说明 程序从上往下依次执行,中间没有任何跳转或选择2.特点 变量必须遵循 “前向引用” (局部变量必须先声明.赋值,然后再使用!) 二.分支结构(条件) 1.说明 程序从两条或多条路 ...
- JavaSE基础知识(2)—变量和运算符
一.变量 1.理解 概念:内存中的一块数据存储空间 2.变量的三要素 数据类型变量名变量值 3.变量的语法和使用步骤★ 步骤1:声明变量(计算机开辟一块空间) 数据类型 变量名;步骤2:为变量赋值(初 ...
随机推荐
- eclipse修改android项目的apk包名类名
在Google提供的Eclipse集成开发环境adt-bundle下修改名称的总结: 1. 修改工程名(apk名称) 在弹出的对话框中输入新名称 该操作实际上是修改<project&g ...
- Qt linux获取cpu使用率、内存、网络收发速度、磁盘读写速度、磁盘剩余空间等
#include "resource_minitor.h" #include "sys/statfs.h" resource_minitor::resource ...
- python使用itchat发送微信消息提醒
最近在学习一点python,先找了找有趣的应用,实际修改跑了一下提高兴趣程度. 找到itchat,它的简介是这样的: “itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单. ...
- [编码实践]SpringBoot实战:利用Spring AOP实现操作日志审计管理
设计原则和思路: 元注解方式结合AOP,灵活记录操作日志 能够记录详细错误日志为运营以及审计提供支持 日志记录尽可能减少性能影响 操作描述参数支持动态获取,其他参数自动记录. 1.定义日志记录元注解, ...
- scrapy-middlewares
1.scrapy中间件 下载中间件Downloader Middlewares 下载器中间件处理请求与响应,对应两个方法 process_request(self, request, spider) ...
- ExcelPackage 读取、导出excel
private static string GetString(object obj) { try { return obj.ToString(); } catch (Exception ex) { ...
- DOM编程艺术章12:一个简单的Ajax例子
大概入了JavaScript的门,现在要回过头恶补Ajax和json了,随手翻到dom编程艺术发现有一个适合回忆的例子,先抄录下来,引入对Ajax作用的大概印象,再去掰开了研究. <!DOCTY ...
- cdh启动datanode报错
问题: 为cdh新增节点时,在分配datanode后,启动报错 Can't open /iot/opt/cloudera-manager/cm-5.11.2/run/cloudera-scm-agen ...
- [JavaScript,Java,C#,C++,Ruby,Perl,PHP,Python][转]流式接口(Fluent interface)
原文:https://en.m.wikipedia.org/wiki/Fluent_interface(英文,完整) 转载:https://zh.wikipedia.org/wiki/流式接口(中文, ...
- FICO-初级会计学
初级会计学 https://wenku.baidu.com/view/39257b1a59eef8c75fbfb348.html?from=search https://wenku.baidu.com ...