异常

异常的分类

  • 检查性异常
  • 运行时异常:可能被程序员避免的异常,运行时异常可以在编译时被忽略
  • 错误ERROR:错误不是异常

在Java中把异常当作对象来处理,并且定义了一个基类java.lang.Throwable作为所有异常的超类

在Java API中已经定义了许多异常类,这些异常类分为两大类,错误Error异常Exception

public class Demo02 {
public static void main(String[] args) { try {
System.out.println(10 / 0);
}catch (ArithmeticException e){
System.out.println("抛出异常!");
System.out.println(e.getMessage());
e.printStackTrace(); // 打印错误的栈信息
}finally {
System.out.println("finally语句块一般用于释放占用的资源");
}
} }

使用Throwable捕获所有异常或错误

可以使用多层catch捕获遗漏的异常

public class Demo02 {
public static void main(String[] args) { try {
//System.out.println(10 / 0);
int[] a = new int[10];
a[10] = 1;
}catch (ArithmeticException e){ // 捕获算术异常
System.out.println("抛出异常!");
System.out.println(e.getMessage());
e.printStackTrace(); // 打印错误的栈信息
}catch (Exception e){ // 捕获所有异常,用于捕获遗漏的异常
System.out.println(e);
}finally {
System.out.println("finally");
}
} }

自定义异常

除了可以使用Java异常类中自带的异常,也可以继承Exception类自定义一个异常

自定义异常

public class MyException extends Exception{

    private int detail;

    public MyException(int a) {
this.detail = a;
} @Override
public String toString() {
return "MyException{" +
"detail=" + detail +
'}';
}
}

测试类

public class Demo03 {

    public static void main(String[] args) {
try{
demo03(11); // 修改这里的参数为小于等于10的数,则不会抛出异常
}catch (MyException e){
System.out.println("MyException=>" + e);
}
} static void demo03(int a) throws MyException{ System.out.println("传递的参数为:" + a); // 如果a > 10则抛出异常,否则不抛出
if (a > 10) {
throw new MyException(a);
} System.out.println("OK");
}
}

throw是手动抛出异常,throws是方法抛出异常

异常——JavaSE基础的更多相关文章

  1. JavaSE基础之JDBC

    JavaSE基础之JDBC 1.JDBC 的步骤: ①加载数据库驱动: a.MySQL:com.mysql.jdbc.Driver: b.SQLServer:com.microsoft.jdbc.sq ...

  2. JavaSE基础:集合类

    JavaSE基础:集合类 简单认识类集 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 而要向存储多个对象,就不能是 ...

  3. javaSE基础07

    javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 stat ...

  4. javaSE基础06

    javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...

  5. javaSE基础05

    javaSE基础05:面向对象 一.数组 数组的内存管理 : 一块连续的空间来存储元素. Int [ ] arr = new int[ ]; 创建一个int类型的数组,arr只是一个变量,只是数组的一 ...

  6. javaSE基础04

    javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...

  7. javaSE基础03

    javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...

  8. javaSE基础02

    javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...

  9. JavaSE基础01

    JavaSE基础篇01 ------从今天开始,我就学习正式java了,O(∩_∩)O哈哈~,请大家多指教哦 一.Windows常见的dos命令 操作dos命令: win7 --->开始 --- ...

随机推荐

  1. MFC软件国际化的几个问题及其解决方案

    作者:马健 邮箱:stronghorse_mj@hotmail.com主页:https://www.cnblogs.com/stronghorse/ 以前我以为PDG相关软件只会在国内流行,所以发行简 ...

  2. oracle执行sql查询语句出现错误ORA-00942:表或视图不存在

    情况是这样,A库的用户名和表空间分别为SH , SH 把业务表SH所有数据从A库,导入到B库, 表空间为SH,用户名为SP 在B库里面执行sql查询语句出现错误ORA-00942:表或视图不存在 语句 ...

  3. Prometheus介绍及docker安装方式

    一.介绍 Prometheus是主要基于Go编写,最初在SoundCloud上构建的开源系统监视和警报工具包,它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 ...

  4. DFS与N皇后问题

    DFS与N皇后问题 DFS 什么是DFS DFS是指深度优先遍历也叫深度优先搜索. 它是一种用来遍历或搜索树和图数据结构的算法 注:关于树的一些知识可以去看<树的概念及基本术语>这篇文章 ...

  5. Mybatis结果集映射问题

    之前的数据库图简单都是纯小写格式,这一次做项目为了显得正规一些,模拟实际的情况,采用了驼峰命名的规则,这时候就遇到了结果匹配的问题. 之前只要 <select id="select&q ...

  6. Python 一网打尽<排序算法>之先从玩转冒泡排序开始

    1. 前言 所谓排序,就是把一个数据群体按个体数据的特征按从大到小或从小到大的顺序存放. 排序在应用开发中很常见,如对商品按价格.人气.购买数量--显示. 初学编程者,刚开始接触的第一个稍微有点难理解 ...

  7. Mybaitis入门基础(一)MyBatis的概念引入及工作原理

    阅读目录 一:对原生态JDBC问题的总结 二:MyBatis框架 三:mybatis入门程序 四:mybatis和Hibernate的本质区别与应用场景 五:小结 一:框架前言的那些事 良将难求 胜铁 ...

  8. GO语言学习——运算符

    运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 运算符 描述 + 相加 - 相减 * 相乘 / 相除 % 求余 注意: ++(自增)和--(自 ...

  9. .NET桌面程序应用WebView2组件集成网页开发3 WebView2的进程模型

    系列目录     [已更新最新开发文章,点击查看详细] WebView2 运行时使用与 Microsoft Edge 浏览器相同的进程模型. WebView2 运行时中的进程 WebView2 进程组 ...

  10. Kafka Kerberos 安全认证

    本主要介绍在 Kafka 中如何配置 Kerberos 认证,文中所使用到的软件版本:Java 1.8.0_261.Kafka_2.12-2.6.0.Kerberos 1.15.1. 1. Kerbe ...