异常——JavaSE基础
异常
异常的分类
- 检查性异常
- 运行时异常:可能被程序员避免的异常,运行时异常可以在编译时被忽略
- 错误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基础的更多相关文章
- JavaSE基础之JDBC
JavaSE基础之JDBC 1.JDBC 的步骤: ①加载数据库驱动: a.MySQL:com.mysql.jdbc.Driver: b.SQLServer:com.microsoft.jdbc.sq ...
- JavaSE基础:集合类
JavaSE基础:集合类 简单认识类集 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. 而要向存储多个对象,就不能是 ...
- javaSE基础07
javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 stat ...
- javaSE基础06
javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...
- javaSE基础05
javaSE基础05:面向对象 一.数组 数组的内存管理 : 一块连续的空间来存储元素. Int [ ] arr = new int[ ]; 创建一个int类型的数组,arr只是一个变量,只是数组的一 ...
- javaSE基础04
javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...
- javaSE基础03
javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...
- javaSE基础02
javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...
- JavaSE基础01
JavaSE基础篇01 ------从今天开始,我就学习正式java了,O(∩_∩)O哈哈~,请大家多指教哦 一.Windows常见的dos命令 操作dos命令: win7 --->开始 --- ...
随机推荐
- JDBC/Mybatis连接数据库报错:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
造成这个的原因是maven导入MyBatis的时候会自动导入最新版本的8.0.11,然后8.0.11采用了新驱动,之前版本会报错. 当我们使用高版本的MySQL驱动时可以在获取数据库的连接getCon ...
- 数据库number(4,3)表示什么
1 你看 number(4,3)是表示 这个数 一共有4位是有效位,后面的3 表示有3个是小数也就是这个数 只能是1.234,这样格式的 最大只能是9.999,2 number(3,4) 表示这个数 ...
- 单例设计模式(Singleton)
一.单例设计模式介绍 所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例, 并且该类只提供一个取得其对象实例的方法(静态方法) 例如:Hibernate的Se ...
- CCS基础样式表
一.css样式表 1.样式表分类 1.内联式 <p >This is an apple</p> 2.内嵌样式表 作为一个独立的区域 内嵌在网页里面,必须写在head标签里面 & ...
- 机器学习---kmeans聚类的python实现
""" Name: study_kmeans.py Author: KX-Lau Time: 2020/11/6 16:59 Desc: 实现kmeans聚类 " ...
- Linux利用crontab创建计划任务详解
crontab 周期性计划任务 cron是Linux下的定时执行工具,可以在无需人工干预的情况下运行作业. 当需要周期性地重复执行任务时可以使用cron服务:该服务每分钟检查一次,并执行符合条件的任务 ...
- 关于Vue.cli 脚手架环境中引入Bootstrap时,table表格样式缺失的解决办法
Vue+bootstrap不能正常使用table的样式 环境:下载官网的本地bootstrap包,然后在vue 的index.html引入bootstrap的css和js环境 问题描述:1. vue里 ...
- nodejs的tream(流)解析与模拟文件读写流源码实现
什么是流? 可读流于可写流 双工流于转换流 背压机制与文件流模拟实现 一.什么是流? 关于流的概念早在1964年就有记录被提出了,简单的说"流"就是控制数据传输过程的程序,比如在那 ...
- AcWing 165. 小猫爬山 DFS
165. 小猫爬山 https://www.acwing.com/problem/content/description/167/ 题目 思路 dfs每一个小猫,对于要不要开新车的状态再进行dfs(注 ...
- QGIS 插件开发Debug教程——使用Pycharm
参考文章:Remote Debugging Guide for Python PyQGIS CookBook 16.4. IDE settings for writing and debugging ...