Java基础之浅谈异常与了解断言
一、产生错误原因
- 用户输入错误
- 设备错误
- 物理限制
- 代码错误
二、解决错误---异常
- 在Java中异常对象都是派生于Throwable类的一个实例。
- 我们一般将异常分为两种:①Error和②Exception
- 如果你的程序出现了Error:是程序无法处理的错误,表示运行应用程序中较严重问题。基本上躺平吧
- 如果你的程序出现了Exception:我们可以通过抛出异常并捕获异常来处理。
2.1引起异常的常见问题
派生于RuntimeException的异常包括一下问题:
- 错误的强制类型转换
- 数组访问越界
- 访问null指针
- 出现这些问题,一定是你自己的问题
其它类异常包括:
- 试图超越文件末尾继续读取数据
- 试图打开一个不存在的文件
- 试图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在。
2.2常见异常处理
- 过程一:“抛”:一旦出现异常,就会在异常代码处生成一个对应异常类的对象,并将此对象抛出。
一旦抛出对象后,其后的代码不在执行。(除非这个异常被捕获,这样后面的代码可以继续执行) - 过程二:“抓”:可以理解为异常处理方式:①try-catch-finally(自己解决) ②throws(扔给别人解决)
三、异常的使用
3.1如何抛出异常
- 首先我们抛出异常通常使用throws
public class Son {
public void run() throws Exception{
//若代码中,出现异常,我们可以将这个异常抛出,抛给调用者去解决这个问题。
//可以一层一层的抛出,但是终究我们还是要捕获这个异常,解决问题。
//有时候你也会认为,这是一个极其不负责任的做法。
}
}
3.2创建异常类(自定义异常)
- 我们需要做的很简单,定义一个派生于(继承)Exception的类,或者是Exception的某个子类。
- 自定义异常通常包含两个构造器,一个是默认构造器,一个是包含详细描述信息的构造器。
class 自定义异常类 extends Exception {
public 自定义异常类() {
}
public 自定义异常类(String message) {
super(message);
}
}
public class Son {
int a = 0;
public void sum() throws 自定义异常类 {
if(a < 0)
throw new 自定义异常类("a不能小于0");
}
}
3.3捕获异常try-catch-finally
public void test() {
try {
//可能存在问题的歧义代码
}catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("一定会走的代码");
}
}
- 我们先走try里的代码,若遇到了异常,则进入catch,将异常处理后,继续执行finally语句
- 若try语句中又return语句,我们仍然执行完try后继续执行finally。
- finally的语句块一定会被执行。(除非我们没有正确处理遇到的异常)
- 若try语句块中没有任何异常,则跳过catch语句块。
四、简单断言
assert关键字:
assert condition;
,assert condition :expression;
- 断言的作用一般都是debug时候使用,如果 assert x>0;结果为true,程序继续执行,反之程序直接停止。
- 了解即可,我这个层次接触用的较少。
五、结尾
- 对于异常处理内容就总结这么多,若想深入学习等待后续更新,基础部分掌握这些足矣。如果有不足之处,希望大家多多包涵,多多支持。如果有不懂的地方可以直接私信问我,欢迎来访!
- 我将会继续更新关于Java的学习知识,感兴趣的小伙伴可以关注一下。
- 文章写得比较走心,用了很长时间,绝对不是copy过来的!
- 尊重每一位学习知识的人,同时也尊重每一位分享知识的人。
你的点赞与关注,是我努力前行的无限动力。
Java基础之浅谈异常与了解断言的更多相关文章
- Java基础之浅谈接口
前言 前几篇文章我们已经把Java的封装.继承.多态学习完了,现在我们开始比较便于我们实际操作的学习,虽然它也是Java基础部分,但是其实入门容易,精通很难. 我认真的给大家整理了一下这些必须学会.了 ...
- Java基础之浅谈集合
Java基础知识.关于List.Set.Map接口的了解,以及ArrayList.LinkedList.HashSet.TreeSet.HashMap.TreeMap...
- java基础(十七)----- 浅谈Java中的深拷贝和浅拷贝 —— 面试必问
假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short, ...
- Java基础:浅谈数据输入流/数据输出流《DataInputstream类与DataOutputstream类》
一.理论概述 数据输入/输出流(DataInputStream类与DataOutputStream类) 允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型. 说白了就是,当读取一个 ...
- Java基础之浅谈继承、多态
一.继承的理解 继承:简单通俗的来讲,继承就是一个类继承另一个类,通常用extends表示继承. 继承的类叫子类,被继承的类叫父类. 子类可以使用父类的变量和方法,同时也可以重写父类的方法. 在Jav ...
- Java基础之浅谈泛型
简单的介绍了Java泛型类型的使用.上手容易,深入很难.
- 【Java基础】浅谈常见设计模式
Num1:单例模式 基本概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 常见写法: 懒汉式 public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值 ...
- java反射机制浅谈
一.Java的反射机制浅谈 最近研究java研究得很给力,主要以看博文为学习方式.以下是我对java的反射机制所产生的一些感悟,希望各位童鞋看到失误之处不吝指出.受到各位指教之处,如若让小生好好感动, ...
- Java SE之浅谈JDK SDK JRE
JDK(Java Development Kit): 1.定义:编写Java程序的程序员使用的软件开发工具包,又被称为Java SDK (Java Software Development Kit ...
随机推荐
- ASP.NET CORE 项目搭建(2022 年 3 月版)
ASP.NET CORE 项目搭建(2022 年 3 月版) 自读 沉淀了多年的技术积累,在 .NET FRAMEWORK 的框架下尝试造过自己的轮子. 摸索着闭门造过 基于 OWIN 服务后端. 摸 ...
- SoftwareTeacher直播自我感想
今天老师发布了一个链接直播是关于:同学们聊聊学习软件工程,CS 课程的问题下面是我的个人感悟和笔记 一.编程技术的提升 编程并不是一件很难的事情,就如开车一样,只有多加练习,自己的技术才能提升上去.拿 ...
- ArcMap操作随记(5)
1.[栅格转面]等工具的使用 若栅格数据为浮点型,需使用[转为整型]工具,将栅格转为整型,再进行操作. 2.人口密度分布趋势图 使用[核密度分析]工具,也可尝试插值 3.点要素做面 [点集转线][要素 ...
- 面向服务开发(SOA)
面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台.操作系统和编程语言 ...
- python轻松入门——爬取豆瓣Top250时出现403报错
关于爬虫程序的418+403报错. 1.按F12打开"开发者调试页面"如下图所示:按步骤,选中Network,找到使用的接口,获取到浏览器访问的信息. 我们需要把自己的python ...
- [FromBody]List<string> 用PostMan如何请求
在MVC项目,写了一个API方法,如下: /// <summary>/// 测试/// </summary>/// <param name="idList&qu ...
- Go 语言 切片的使用(增删改查)
Go 语言 切片的使用(增删改查) 引言Golang 的数组是固定长度,可以容纳相同数据类型的元素的集合.但是当长度固定了,在使用的时候肯定是会带来一些限制,比如说:申请的长度太大会浪费内存,太小又不 ...
- 在idea中新建完springboot项目的时候遇到问题(右键没有class选择;控制台报错:Could not transfer artifact org.apache.tomcat.embed:tomcat-embed-core:jar:9.0.60 from/to central ....)
一.在idea中新建完springboot项目的时候遇到问题 问题1:右键没有class选择 解决:之所以会如此,是因为项目还没完成创建完成,解决:只需等等即可,等到完全创建完成即可 问题2(报tom ...
- Vue中图片的加载方式
一.前言 VUE项目中图片的加载是必须的,那么vue中图片的加载方式有哪些呢,今天博主就抽点时间来为大家大概地捋一捋. 二.图片的加载方法 1.在本地加载图片(静态加载) 图片存放assets文件夹中 ...
- MySQL JDBC常用知识,封装工具类,时区问题配置,SQL注入问题
JDBC JDBC介绍 Sun公司为了简化开发人员的(对数据库的统一)操作,提供了(Java操作数据库的)规范,俗称JDBC,这些规范的由具体由具体的厂商去做 对于开发人员来说,我们只需要掌握JDBC ...