零基础入门学习JAVA课堂笔记 ——DAY08
异常
1.什么是异常?
Exception
异常是指程序在运行过程中出现的不期而至的各种状况
异常发生在程序运行期间,它影响了正常程序执行流程
通俗易懂的表达就是,程序在发生意料之外或者拿到的不是想要的时候导致程序不能往下执行的情况就叫异常。
在Java编程学习中我们也经常会碰到许许多多的异常
package pro;
public class Test {
public static void main(String[] args){
int[] sum = new int[3];
System.out.println(sum[3]); //ArrayIndexOutOfBoundsException!!
System.out.println(11/0);//ArithmeticException
}
}
3.异常的简单分类
- 检查性异常
- 在编译的时候能发现的异常
- 运行时异常
- 编译时发现不了的异常只会在运行时出错
- 错误:不是异常
- 脱离程序员控制的问题,错在代码中通常被忽略
4.异常处理框架
Java中把异常当中对象来处理,提出异常处理框架的思想

RuntimeException:一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能的考虑避免这类异常的发生
Error和Exception的区别:Error错误是灾难性的致命的错误,当JVM遇到此类错误时,JVM一把会选择终止线程;而Exception通常情况下可以被程序处理的,并且在程序中应该尽可能的去处理这些异常
5.Java的异常处理机制
- 抛出异常
- 处理异常
异常处理的五个关键字:try、catch、finally、throw、throws
package pro;
public class Test {
public static void main(String[] args){
int[] sum = new int[3];
try { //监控资源区域
System.out.println(sum[3]);
}catch (ArrayIndexOutOfBoundsException e){ //catch 异常捕获
System.out.println("亲,您的数组越界了");
}finally{ //finally 无论怎么样都会执行 处理善后工作
System.out.println("end.");
}
}
}
异常处理也支持多个catch形式
try {
}catch (){ //异常3
}catch(){ //异常2
}catch(){ //异常1
}finally{
}
如上代码,程序在没捕获到异常3就会捕获异常2,如果还没捕获异常2就会捕获异常1;因此,我们应该把大的异常写下面小的异常写下面(范围大小)
6.主动抛出异常
我们可以在try监控区域,通过throw直接抛出异常
package pro;
public class Test {
public static void main(String[] args){
new Test().test(1,0);
}
public void test(int a,int b){
if(b == 0){
throw new ArithmeticException();
}
}
}
在方法中捕获了异常我们可以通过throws从方法中抛出到上一级
package pro;
public class Test {
public static void main(String[] args){
try {
new Test().test(1,0);
} catch (ArithmeticException e) {
System.out.println("出错啦!!!");
}
}
public void test(int a,int b) throws ArithmeticException{
if(b == 0){
throw new ArithmeticException();
}
}
}
7.自定义异常
使用Java内置的异常类可以描述在编程时出现的大部分的异常情况。
大Java还是给程序员提供了自定义异常类,只需要继承Exception即可
自定义一个异常类
package pro;
public class MyException extends Exception{
int a = 10;
public MyException(int b){
this.a = b;
}
//返回异常信息到catch的e
public String toString(){
return "Hello Wrold!!";
}
}
通过异常类自定义异常
package pro;
public class Test {
public static void main(String[] args){
try {
new Test().test(5,21);
}catch (MyException e){
System.out.println("lala:"+e);
}
}
public void test(int a,int b) throws MyException{
if(b != 10){
throw new MyException(a);
}
}
}
零基础入门学习JAVA课堂笔记 ——DAY08的更多相关文章
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- 《零基础入门学习Python》【第一版】视频课后答案第001讲
测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...
- 零基础入门学习Python(1)--我和Python的第一次亲密接触
前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...
- 093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 02 static关键字 03 static关键字(下)
093 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 03 # 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 ...
- 088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现
088 01 Android 零基础入门 02 Java面向对象 02 Java封装 01 封装的实现 02 封装的代码实现 本文知识点:Java封装的代码实现 说明:因为时间紧张,本人写博客过程中只 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和
057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...
- 056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用
056 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 03 一维数组的应用 本文知识点:数组的实际应用 程序开发中如何应用数组? 程序代码及其运行结果: 不同数据类 ...
- 055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念
055 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 02 数组的概念 本文知识点:数组的概念 数组的声明创建.初始化 在学习数组的声明创建.初始化前,我们可以和之 ...
随机推荐
- iview 将Modal抽取成组件并控制Modal的显示隐藏
开发中遇到Modal弹出框的内容太多,就想把Modal单独分装成一个组件,但是发现封装成组件后Modal的关闭和打开有问题.如下方法可以解决这个问题. 父级页面: <PriceInfodModa ...
- poi 4.11版本 word模板操作
写代码之前先说说遇到的问题,之前word模板是使用poi 3.9的包实现的,之后又写了exlce上传下载的功能使用的是poi 4.11的版本,他们之间融合的时候发现包冲突,总有一个功能不能使用,之后发 ...
- freeswitch的事件引擎实现分析
概述 freeswitch是由事件驱动的,fs内部有各种事件来标识状态的变化包括呼叫的变化.配置的变化.号码的变化等等. 而一个框架内的事件引擎需要实现哪些基本的功能呢? 让我们来看一下fs的事件引擎 ...
- 简单剖析Hashmap
剖析 Java Hashmap 源码 在 Java 的集合框架中,HashMap 是一颗璀璨的明珠.通过深入挖掘其源码,我们将揭开 HashMap 的神秘面纱,理解其底层原理.扩容机制和数据结构. 1 ...
- Java 子父类型集合之间的转换
假设现在有这样一个方法,入参是父类型的集合参数,这是个通用方法,你需要共用它,你现在要传子类型集合进去,怎么办? class Animal { } class Dog extends Animal { ...
- 基于java+springboot的外卖点餐网站、外卖点餐管理系统
该系统是基于java+springboot开发的外卖点餐网站.外卖点餐管理系统.是给师弟开发的课程作业.运行过程中的问题,可以在github咨询作者. 演示地址 前台地址: http://food.g ...
- 【scikit-learn基础】--『回归模型评估』之误差分析
模型评估在统计学和机器学习中具有至关重要,它帮助我们主要目标是量化模型预测新数据的能力. 在这个数据充斥的时代,没有评估的模型就如同盲人摸象,可能带来误导和误判.模型评估不仅是一种方法,更是一种保障, ...
- Angular系列教程之观察者模式和RxJS
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- [转帖]MySQL如何进行索引重建操作?
MySQL如何进行索引重建操作? - 潇湘隐者 - 博客园 (cnblogs.com) 在MySQL数据库中,没有类似于SQL Server数据库或Oracle数据库中索引重建的语法(ALTER IN ...
- [转帖]MySQL 8.0 以后的版本策略变化
https://www.modb.pro/db/1717815842220630016 产品版本变更 从2023年7月18日开始,MySQL官网出现了一个新的版本 MySQL 8.1.0,直接改变 ...