异常

异常的分类

  • 检查性异常
  • 运行时异常:可能被程序员避免的异常,运行时异常可以在编译时被忽略
  • 错误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. mapreduce分区

    本次分区是采用项目垃圾分类的csv文件,按照小于4的分为一个文件,大于等于4的分为一个文件 源代码: PartitionMapper.java: package cn.idcast.partition ...

  2. MySQL 中 SQL语句大全(详细)

    sql语句总结 总结内容 1. 基本概念 2. SQL列的常用类型 3. DDL简单操作 3.1 数据库操作 3.2 表操作 4. DML操作 4.1 修改操作(UPDATE SET) 4.2 插入操 ...

  3. Struts2-获取值栈对象与结构

    1.获取值栈对象有多种方式 (1)使用ActionContext类里面的方法获取值栈对象 @Override public String execute(){ //1.获取ActionContext类 ...

  4. oracle查看impdp进度

    当数据量比较大的时候,当你导入,导出的时候,在数据库中查看运行的情况,可以利用下面的视图查看: //这里由于导表空间时出现问题,所以再次执行导入任务.但是已有任务在执行,查看执行中的任务方法. ora ...

  5. Java 8 学习记录

    Java 8 学习记录 官方文档 https://docs.oracle.com/javase/8/ https://docs.oracle.com/javase/8/docs/index.html ...

  6. 原生的ajax请求

    原生ajax请求的步骤: get 请求: 1,创建一个xhr变量 var xhr=new XMhttpRequest(); 2,设置请求方式和请求地址 xhr.open('url','http//19 ...

  7. AcWing 【算法提高课】笔记02——搜索

    搜索进阶 22.4.14 (PS:还有 字串变换 A*两题 生日蛋糕 回转游戏 没做) 感觉暂时用不上 BFS 1. Flood Fill 在线性时间复杂度内,找到某个点所在的连通块 思路 统计连通块 ...

  8. Java语言学习day15--7月21日

    今日内容介绍1.Eclipse开发工具2.超市库存管理系统 ###01Eclipse的下载安装 * A: Eclipse的下载安装  * a: 下载 * http://www.eclipse.org ...

  9. 「Python实用秘技07」pandas中鲜为人知的隐藏排序技巧

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第7期 ...

  10. JS_进阶-遍历对象属性、数组输出、Math、正则表达式匹配

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...