一、产生错误原因

  • 用户输入错误
  • 设备错误
  • 物理限制
  • 代码错误

二、解决错误---异常

  • 在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基础之浅谈异常与了解断言的更多相关文章

  1. Java基础之浅谈接口

    前言 前几篇文章我们已经把Java的封装.继承.多态学习完了,现在我们开始比较便于我们实际操作的学习,虽然它也是Java基础部分,但是其实入门容易,精通很难. 我认真的给大家整理了一下这些必须学会.了 ...

  2. Java基础之浅谈集合

    Java基础知识.关于List.Set.Map接口的了解,以及ArrayList.LinkedList.HashSet.TreeSet.HashMap.TreeMap...

  3. java基础(十七)----- 浅谈Java中的深拷贝和浅拷贝 —— 面试必问

    假如说你想复制一个简单变量.很简单: int apples = 5; int pears = apples; 不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short, ...

  4. Java基础:浅谈数据输入流/数据输出流《DataInputstream类与DataOutputstream类》

     一.理论概述 数据输入/输出流(DataInputStream类与DataOutputStream类) 允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型. 说白了就是,当读取一个 ...

  5. Java基础之浅谈继承、多态

    一.继承的理解 继承:简单通俗的来讲,继承就是一个类继承另一个类,通常用extends表示继承. 继承的类叫子类,被继承的类叫父类. 子类可以使用父类的变量和方法,同时也可以重写父类的方法. 在Jav ...

  6. Java基础之浅谈泛型

    简单的介绍了Java泛型类型的使用.上手容易,深入很难.

  7. 【Java基础】浅谈常见设计模式

    Num1:单例模式 基本概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点. 常见写法: 懒汉式 public class Singleton { /* 持有私有静态实例,防止被引用,此处赋值 ...

  8. java反射机制浅谈

    一.Java的反射机制浅谈 最近研究java研究得很给力,主要以看博文为学习方式.以下是我对java的反射机制所产生的一些感悟,希望各位童鞋看到失误之处不吝指出.受到各位指教之处,如若让小生好好感动, ...

  9. Java SE之浅谈JDK SDK JRE

    JDK(Java Development Kit):   1.定义:编写Java程序的程序员使用的软件开发工具包,又被称为Java SDK (Java Software Development Kit ...

随机推荐

  1. 金蝶 K3 WISE 服务器必须登陆到桌面以后用户才能正常使用解决!

    我们单位K3的系统,由当地的服务商安装完以后就出现各种蛋疼的问题.做技术支持的小伙他总是会给一个小工具来解决,问他是什么原因要么说我的网络有问题,要么说我们的服务器有问题. K3所有客户端无法登陆一键 ...

  2. pandas常用操作详解(复制别人的)——数据透视表操作:pivot_table()

    原文链接:https://www.cnblogs.com/Yanjy-OnlyOne/p/11195621.html 一文看懂pandas的透视表pivot_table 一.概述 1.1 什么是透视表 ...

  3. SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据

    SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...

  4. 解决vue单页面应用做微信JSSDK注入权限时出现“invalid signature”(ios端)

    --都说微信开发多坑,没想到遇到一个天坑. 在做一个vue项目时,要用到微信JS-SDK,官方文档详见:https://developers.weixin.qq.com/doc/offiaccount ...

  5. 2.4 C++STL deque容器详解

    文章目录 2.4.1 引入 2.4.2 代码示例 2.4.3 代码运行结果 2.4.4 具体案例 总结 2.4.1 引入 deque容器类比vector容器来学习. deque为双向开口容器,见下图. ...

  6. Linux系统常用指令

    建立一个文件或文件夹的软链接: ln -s 原名 软链接名 软链接就类似Windows下的"快捷方式",访问它其实访问的是它指向的内容. git仓库操作 1.通常远程操作的第一步, ...

  7. YCCMS 3.3 CSRF漏洞--代码执行

    一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.点击新建项目按钮,弹出对画框中选择(C:\ ...

  8. Molecule实现数栈至简前端开发新体验

    Keep It Simple, Stupid. 这是开发人耳熟能详的 KISS 原则,也像是一句有调侃意味的善意提醒,提醒每个前端人,简洁易懂的用户体验和删繁就简的搭建逻辑就是前端开发的至简大道. 这 ...

  9. Spring bean 和单例bean的线程安全

    Bean的作用域 Spring 3中为Bean定义了5中作用域,分别为singleton(单例).prototype(原型).request.session和global session,5种作用域说 ...

  10. Java并发机制(7)--线程池ThreadPoolExecutor的使用

    Java并发编程:线程池的使用整理自:博客园-海子-http://www.cnblogs.com/dolphin0520/p/3932921.html 1.什么是线程池,为什么要使用线程池: 1.1. ...