java异常处理简介_【自学java】异常处理简介
第四章 异常处理
学习 java 、刷算法题时,很少有人会在乎异常处理, 要不 try catch 、 要不就 throw 。但在做项目时候, 异常处理混乱会导致程序可维护性降低。异常本身也是程序的一部分。
第一节 简介
4.1.1 分类
Throwable 接口又分为“异常”、“错误”。异常是程序可以自己处理的, 错误一般是程序无法处理。
2020-07-22_210628.png
一旦捕获了异常,该段程序进入异常处理流程,不会在执行。try 后的代码还是会继续执行的。
public static void main(String[] args) {
try {
System.out.println(13/0);
}catch (Exception e){
e.printStackTrace();
}
System.out.println("会往下执行码?");
}
out
会往下执行码?
java.lang.ArithmeticException: / by zero
at com.awork.common.utils.Test.main(Test.java:6)
4.1.2 检测性异常
异常的另一种分类 : 受检异常 checked、 非受检异常 unchecked。
区别: 在编译的过程中, 非受检异常不会提示,只有当程序运行到异常位置触发异常, 程序寻找异常是否被处理。
非受检异常: RuntimeException 、 Error
受检异常: IOException 、 SQL …
注:
jvm 认为受检异常是可修复的,在编译时会提出, 不会通过编译。诸如 RuntimeException 之类的非受检异常,可以通过编译。 但 jvm 认为程序本身有问题,应该本身捕获异常并处理,再重新运行程序。
第二节 异常与错误
4.2.1 区别
异常是程序可以自己处理的, 错误一般是程序无法处理。 异常处理是程序的一部分,处理过后程序依然可以继续执行流程 。 错误可能需要重新分配 jvm 资源,(如爆栈) 程序已经无法通过 try catch 处理了 。
第三节 异常的处理方式
4.3.1 处理
常规 try ... catch ... finally ...
public static void main(String[] args) {
try {
System.out.println(13/0);
}catch (Exception e){
e.printStackTrace();
} finally {
System.out.println("finally");
}
System.out.println("会往下执行码?");
}
out :
finally
java.lang.ArithmeticException: / by zero
会往下执行码?
可见 , 即使抓到异常, finally 代码块还是会执行 , 并且先于后续代码。
throws
声明在方法中 ,表示方法可能会抛出异常,上层调用者需要捕获异常。
throw
手动抛出异常 : throw new MyException(params);
4.3.2 自定义异常
便于对一类异常进行自定义分类, 遵循 java 封装原则。 便于捕获异常迅速定位。(比如, 是某类 service 出错)
继承 Exception , 重写构造方法 , 例如:
public class MyException extends Exception {
public MyException() {
super();
}
public MyException(String str) {
super(str);
}
}
4.3.3 获取异常信息的常用方法
方法1
e.printStackTrace();
方法2
StackTraceElement[] stackTrace = e.getStackTrace();
for (StackTraceElement stackTraceElement : stackTrace) {
String className = stackTraceElement.getClassName();
System.out.println(className);
}
java异常处理简介_【自学java】异常处理简介相关推荐
- java进度条_自学java你需要知道的,适合编程小白
1. java学习网站 之前在很多学习网站上学习过Java,踩过很多坑,今天给大家推荐一个比较好用的Java学习网站,希望大家能少踩坑 Java教程 | 项目实践一站式java学习 这个网站的针对性强 ...
- java 入门程序_自学 Java 怎么入门?
自学Java的确不易,但是有一份好的学习路线图,跟着路线图来一步一步踏踏实实的学下来,相信你也一定可以成为大牛. 分享给大家一套学习线路图,内容还是很全面的,每个阶段需要学习的内容罗列的也很清楚,这样 ...
- 达内学java要多久_自学Java需要学多久才能达到工作的程度
目前Java以上IT市场中最受企业欢迎的开发语言,所以很多人想自学Java,学精通后转行做Java开发类的工作.今天小编就来给大家讲讲自学Java需要学多久才能达到工作的程度. 其实不同的人学习Jav ...
- 自学java的难度_自学java难不难 搞定这十三步就够了
自学java难不难,对不同的人来说可能不一样,有着编程基础的来说,相对容易.如果是完全小白,就会稍微困难点,下面总结了十三步来自学java的步骤. 第1步:自学JAVA的开发环境配置.开发首个Java ...
- java short 后缀_自学java的新手问个问题,为什么写个代码中的int能自动转
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 你学一个东西 先学会他的定义 java语法是这样定义的 类型修饰符 变量名 = 值 其中左边是被赋值的 右边是赋值的 类型修饰符有 八种 int bool ...
- java short后缀_自学java的新手问个问题,为什么写个代码中的int能自动转
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 你学一个东西 先学会他的定义 java语法是这样定义的 类型修饰符 变量名 = 值 其中左边是被赋值的 右边是赋值的 类型修饰符有 八种 int bool ...
- java 数组赋值_自学JAVA每日记录(10)-欢迎指点欢迎共勉
接上一篇 编程练习:编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组 要求: 1. 要求通过定义带参带返回值的方法来实现 2. 通过 ...
- 没有学历学了JAVA怎么找份工作_自学java没学历可以找到工作嘛?
可以的,假如你的学习能力强,然后能够控制自己不去到处撩妹,有毅力是完全可以自学,然后学出来的技术吊炸天,然后找一份很好的工作的 现在市场上的最低要求的学历是大专,如果说你在这个学历以下的话,我的建议是 ...
- 前几天在头条上收到一条私信,内容大致是这样的:“我学校比较垃圾,想自学 Java 可以吗?自学 Java 难吗?毕业后能找到一份 6k左右的工作吗?”
前几天在头条上收到一条私信,内容大致是这样的:"我学校比较垃圾,想自学 Java 可以吗?自学 Java 难吗?毕业后能找到一份 6k左右的工作吗?" 不知道有没有人有类似的问题, ...
- java 提高篇_【Java入门提高篇】Day16 Java异常处理(上)
当当当当当当,各位看官,好久不见,甚是想念. 今天我们来聊聊Java里的一个小妖精,那就是异常. 什么是异常?什么是异常处理? 异常嘛,顾名思义就是不正常,(逃),是Java程序运行时,发生的预料之外 ...
最新文章
- HTML基础第六讲---表格
- Ajax系列之三:UpdatePanel
- Excel的poi缓存问题
- python selenium 小知识点整理笔记(更新中...)
- VB6之从1970年1月1日起的秒数 的与C语言类似的时间函数
- 学计算机干眼,长时间看电脑致视力模糊?4个动作解决干眼症
- 谷歌跟oracle_Google vs Oracle –判决临近,Oracle的知识产权案件步履蹒跚
- 【TCP网络编程】C语言实现TCP服务器和客户端之间的通信(linux)
- cad中能够既刷新视图又能刷新计算机图形数据库,建筑CAD练习题.doc
- ACRush 楼天成回忆录
- 1.oracle的dump理解一 BH buffer header
- 2016年-2021年【总目录】
- 6个的IT技术开发网站
- 五分钟,让你掌握学好CNC数控编程的技巧
- 微信如何直接跳转外部浏览器
- java中什么是异构?
- MultipartFile转File
- mysql在数据库中创建工作表时,总是报语法错误。(表名字符号有问题)
- 中国移动WLAN无线上网清单查询
- 【目标检测】交通标识数据集CCTSDB标注处理(转YOLO)
热门文章
- 更简洁的方式修改Chrome的User Agent,轻松体验移动版网络
- ubuntu进程管理方法
- 博弈——巴什博弈(hdu1846,2188,2897)
- Centos7访问本地电脑共享文件夹遇到的问题
- DNS服务器 安装部署 以及子域授权和转发
- 机器学习速成课程 | 练习 | Google Development——编程练习:TensorFlow 编程概念
- 【AI视野·今日CV 计算机视觉论文速览 第165期】Mon, 21 Oct 2019
- 线程休眠 sleep
- 组合框载入数据库的内容
- 了解Java的发展史