转发请注明出处:
安卓猴的博客(http://sunjiajia.com)
本节课程将学习以下内容:
- 什么是异常
- 异常的分类
- try...catch...finally结构的使用方法
- throw的作用
- throws的作用
什么是异常
含义:
- 在面向对象的世界中,异常也是对象;
- 我们自己的话说,Java程序在正常运行中,出现的一些意外,被称为异常。
- 定义:中断了正常指令流的事件;
- 异常和语法错误是不同的东西;
- 语法错误在编译的时候就会报错;而异常是在运行的时候抛出来的。
格式:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Demo5.main(Demo.java:3)
例子1:
这个例子它报上面格式中的错误。
class Demo{
public static void main(String[] args) {
int i = 1 / 0;
}
}
异常的分类
- 所有的异常都是Throwable的直接子类;
- 有2个这样的类Exception和Error;
- Error是JVM在运行是产生的错误,一旦产生它,JVM就会直接关闭;
- Error也有各种子类;
- Exception就是我们学习的异常,它也有很多子类,我们将在开发中遇到;
- Exception分为两大类:运行时异常和编译时异常;
- 异常被捕捉后,程序可以正常运行和编译。
try...catch...finally结构的使用方法
格式:
try {
// 有可能出现异常的代码,如果语句2出现异常,那么其后面的语句不再执行,
// 直接跳入catch体。
语句1;
语句2;
...
} catch(Exception e) {
// Exception e是JVM产生的异常对象;
// 在这里捕捉异常;
e.printStackTrace(); //打印异常信息;
} finally {
// 无论是否捕捉到了异常,都会执行。有时也称为异常的出口
语句;
}
例子2:(请动手)
class Demo{
public static void main(String[] args) {
try {
System.out.println("Hello Monkey!");
// 有可能出现异常的代码
int i = 1 / 0;
} catch(Exception e) {
e.printStackTrace();
} finally {
// 无论是否捕捉到了异常,都会执行。有时也称为异常的出口
System.out.println("Hello Android!");
}
}
}
throw和throws
例子3:(请动手)
1.新建一个User.java的源文件:
class User {
private int age;
private int money;
public void setAge(int age) {
if (age < 0) {
// 生成一个异常对象
RuntimeException e = new RuntimeException("年龄不能为负数!");
// 抛出这个异常
throw e;
}
this.age = age;
}
// throws的用法,对象在使用这个函数时,必须要捕捉异常。
public void setMoney(int money) throws Exception {
this.money = money;
}
}
2.新建一个Demo01.java的源文件:
class Demo01 {
public static void main(String[] args) {
User user01 = new User();
//年龄怎么会有负数呢?因此我们要捕捉这个异常。
user01.setAge(-20);
try {
user01.setMoney(2000);
} catch (Exception e) {
e.printStackTrace();
System.out.println("2000太少!");
}
}
}