异常

异常的分类

  • 检查性异常
  • 运行时异常:可能被程序员避免的异常,运行时异常可以在编译时被忽略
  • 错误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. 在Wireshrak中使用过滤器——捕获过滤器

    过滤器可以让你找出你所希望进行分析的数据包.简单来说,一个过滤器就是定义了一定条件,用来包含或者排除数据包的表达式.如果你不希望看到一些数据包,你可以写一恶搞过滤器来屏蔽它们.如果你希望只看到某些数据 ...

  2. Python中用类实现对象和封装

    """ 用类实现对象和封装 对象:对应客观世界的事物,将描述事物的一组数据和与这组数据有关的操作封装在一起, 形成一个实体,这个实体就是对象 类:具有相同或相似性质的对象 ...

  3. hutool工具类常用API整理

    0.官网学习地址 https://www.hutool.cn/ 1.依赖 <dependency> <groupId>cn.hutool</groupId> < ...

  4. 2021.08.06 P2441 角色属性树(树形结构)

    2021.08.06 P2441 角色属性树(树形结构) P2441 角色属性树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 求离x最近的祖先y且(x,y)>1. ...

  5. 使用etcd选举sdk实践master/slave故障转移

    本次将记录[利用etcd选主sdk实践master/slave高可用], 并利用etcdctl原生脚本验证选主sdk的工作原理. master/slave高可用集群 本文目标 在异地多机房部署节点,s ...

  6. vue 实现高德坐标转GPS坐标

    vue 实现高德坐标转GPS坐标 首先介绍一下常见的几种地图的坐标类型: WGS-84:这是一个国际标准,也就是GPS坐标(Google Earth.或者GPS模块采集的都是这个类型). GCJ-02 ...

  7. Git批量下载MODIS数据

    1.download.sh获取 EarthData(需注册账号)中获取MODIS的产品类型.地理范围.时间年份等,进入下载页面Download Status 下载点击得到_download.sh 文件 ...

  8. SpringBoot中异常处理

    一.背景 在我们编写程序的过程中,程序中可能随时发生各种异常,那么我们如何优雅的处理各种异常呢? 二.需求 1.拦截系统中部分异常,返回自定义的响应. 比如: 系统发生HttpRequestMetho ...

  9. Linux命令篇 - grep 命令

    grep grep searches the named input FILEs (or standard input if no files are named, or if a single hy ...

  10. 为什么建议大家使用 Linux 开发?

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ Linux 能用吗? 我身边还有些朋友对 linux 的印象似乎还停留在黑乎乎的命令行界面上. ...