try 和 catch 关键字
最近,在看ArrayList的原码时,在 clone() 的方法中发现了 try 和 catch 这两个我之前没见过的关键字。因为之前没有见到过,所以不清楚它们的作用,导致我看不懂原码的意思。于是我就上网找资料学习相关的知识。
经过查找资料,我得知,try / catch 语句用于处理代码中可能出现的错误信息。通常是程序员造成的编码错误或错别字,也可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。如果没有 try / catch 的话,就有可能出现异常导致程序崩溃,而 try / catch 则可以保证程序的正常运行。
例如:当除数为0时,编译不会报错,如果没有 try / catch 的话,程序直接崩溃。用 try / catch 的话,则可以让程序运行下去,并且输出为什么出错!
语法格式:
try {
// 尝试执行的代码块
}
catch (异常类型1 异常类型的变量名1) {
// 捕获错误的代码块1
}
catch (异常类型2 异常的变量名2) {
// 捕获错误的代码块2
}
...
finally {
// 最终执行的代码块
}
当 try 代码块中的语句出现错误时,就会进入 catch 语句开始执行。 catch 和 finally 语句都是可选的,但在使用 try 语句时必须至少使用一个。catch 可以有多个,当所有的 catch 都不满足时,再执行 finally 里的代码。
以上都是在百度和优快云上找到的,我们知道,编程语言都是需要自己去动手操作的。因此我自己试着用了一下 try / catch 语句,代码如下
public class Test {
public static void main(String[] args) {
try {
System.out.println("执行try语句");
int a = 10;
int b = 0; // int b = 10;
int c = a / b;
System.out.println(c);
}
catch (ArithmeticException c) { // ArithmeticException是不使用 try/catch 时报的错
System.out.println("执行catch语句");
}
finally {
System.out.println("执行finally语句");
}
}
}
运行结果如下
将b
改成 10 后,运行结果如下
可以看见,finally 语句都会被执行。因此我们可以得出结论,不论 try 语句中的代码块是否正确,最终都会执行 finally 语句。