java关键字 try


java关键字 try

文章插图
try(java关键字)Java关键字
用于try..catch..finally块,进行异常捕获 。
基本介绍中文名:尝试
外文名:try
套用:用于捕获异常
基本信息名称:try用法:try是try..catch..finally块中用来引导第一部分的关键字,用于声明需要捕获指定语句块的异常完整的使用方法是try {    语句块1} catch (<? extends Throwable> e) {    语句块2.1} catch (<? extends Throwable> e) {    语句块2.2} catch (<? extends Throwable> e) {    语句块2.3...} finally {    语句块3}catch可以出现0次、1次或多次,finally可以出现0次或1次,但是catch和finally不能同时不出现 。catch用法:当语句块1中抛出异常时,立即离开语句块1,之后会在所有catch中依次进行类名比对 。如果抛出异常和catch声明的异常类名一致,或抛出异常是catch声明的异常的子类,则会进入该catch的语句块(成为异常的捕获),在catch的语句块中可以将异常输出到命令行或引导用户进行问题反馈 。如果任何一个catch都不匹配,会像上层调用抛出这一异常(在此之前会进入finally语句块,详情参考下面的finally用法) 。finally用法:在语句块1、语句块2中,任何试图离开try..catch..finally块的语句都会导致语句块3被执行,如return throw break continue 。在finally的语句块中可以进行记忆体回收等工作 。需要注意的是,如果导致离开的不是语句造成的,而是断电、记忆体不足等计算机故障,finally语句块不会被执行 。例子:public class Test {    public static void main(String[] args) {        int i = 10;        try {            System.out.println(i / 0);        }  catch(ArithmeticException ame) {            ame.printStackTrace();        } finally {            System.out.println("byebye");        }    }}作用关係try..catch..finally块和return的作用关係不易于理解 。在这里catch中的return语句和try中的return语句相似,因此只讨论try..finally的情况例1:private int a = 0;private static int c1() {    try {        return 1;    } finally {        a++;    }}函式返回1,1次调用后a的值为1这是因为在函式返回之前finally语句块会被执行例2:private static int c2() {    try {        return 1; // unreachable statement    } finally {        return 2;    }}函式返回2这是因为在函式返回之前finally语句块会被执行,因此return 2;会早于return 1;Intellij IDEA等深度IDE中会提示unreachable statement例3:private int a = 0;private static int c3() {    try {        return a + 10;    } finally {        a++;    }}