章节
- Java 基础
- Java 简介
- Java 环境搭建
- Java 基本语法
- Java 注释
- Java 变量
- Java 数据类型
- Java 字符串
- Java 类型转换
- Java 运算符
- Java 字符串
- Java Math
- Java 布尔运算
- Java If … Else
- Java Switch
- Java While 循环
- Java For 循环
- Java Break 与 Continue
- Java 数组
- Java 异常
- Java 方法
- Java 类与对象
- Java 类、对象
- Java 类的属性
- Java 类方法
- Java 构造函数
- Java 修饰符
- Java 封装
- Java 包
- Java 继承
- Java 多态
- Java 内部类
- Java 抽象
- Java 接口
- Java 枚举
- Java 用户输入/Scanner
- Java 日期与时间
- Java ArrayList
- Java HashMap
- Java 包装类
- Java 文件
Java 异常
执行Java代码时,可能会发生各种错误: 程序员写代码时犯的错误、用户非法输入造成的错误,或其他不可预见的错误。
当发生错误时,Java通常会停止程序运行,并生成错误消息。用技术方面的话说: Java将抛出异常/exception(抛出错误)。
Java try catch
try
语句可以对一个代码块,在其执行时,进行错误检测。
catch
语句定义了,当try块中发生错误时,要执行的代码块,。
try
与 catch
关键字成对出现:
语法
try {
// 要尝试的代码块
}
catch(Exception e) {
// 处理错误的代码块
}
考虑下面例子
这将生成一个错误,因为myNumbers[10]
不存在。
public class MyClass {
public static void main(String[ ] args) {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]); // error!
}
}
输出:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at MyClass.main(MyClass.java:4)
如果发生错误,可以用try…catch
捕捉错误,然后执行错误处理代码:
示例
public class MyClass {
public static void main(String[ ] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("出错了");
}
}
}
输出
出错了
Finally
不管try
块中有没有报错,在try...catch
之后,finally
语句中的代码块将总是会执行:
示例
public class MyClass {
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("出错了");
} finally {
System.out.println("'try catch'结束了");
}
}
}
输出将为:
出错了
'try catch'结束了
throw 关键字
throw
语句让你可以创建自定义错误。
throw
语句与异常类型一起使用。Java中有很多异常类型: ArithmeticException
, ClassNotFoundException
, ArrayIndexOutOfBoundsException
, SecurityException
, 等等.
异常类型通常与自定义方法一起使用。如果不理解下面的例子,不必担心,下一章中会了解更多。
示例
如果年龄小于18岁,抛出异常(打印“拒绝访问”);如年龄在18岁或以上,打印“允许访问”:
public class MyClass {
static void checkAge(int age) {
if (age < 18) {
throw new ArithmeticException("拒绝访问 - 低于18岁");
}
else {
System.out.println("允许访问 - 年龄合格");
}
}
public static void main(String[] args) {
checkAge(15); // 年龄设置为15 (低于18...)
}
}
输出将为:
Exception in thread "main" java.lang.ArithmeticException: 拒绝访问 - 低于18岁
at MyClass.checkAge(MyClass.java:4)
at MyClass.main(MyClass.java:12)
如果你的年龄是20岁,你不会有例外:
示例
checkAge(20);
输出将为:
允许访问 - 年龄合格