java里try是干什么的?

Python014

java里try是干什么的?,第1张

“try-catch-finally语句块”用来捕获并处理异常

你可能会想,如果你写程序的时候有意的去避免异常,那么“try-catch-finally语句块”不就没什么用了吗?可是,你的程序不是给你自己使用的吧?如果你要求用户输入1个数字,而且你的程序也明确提示了用户需要输入的是数字,但用户就是输入了“英文字母”,那么,你的程序没有“try-catch-finally语句块”一定会直接崩溃的。而如果用了“try-catch-finally语句块”,并将这个异常处理为“再次提醒用户需要输入的是数字,并再次允许用户重新输入”,那你的程序就不会半途挂掉。

【示例】

//用"try-catch"强制用户必须输入一个数字!

import java.util.Scanner

public class Test2 {

  public static void main(String args[]) {

    double d = 0

    boolean badInput = true

    Scanner input

    while(badInput) {

      System.out.println("请输入1个数字:")

      input = new Scanner(System.in)

      try {

        d=input.nextDouble()

      } catch(Exception e) {

        System.out.println("您输入的不是数字!")

        continue

      }

      badInput = false

    }

    System.out.println("您输入的是:" + d)

  }

}

try就像一个网,把try{}里面的代码所抛出的异常都网住,然后把异常交给catch{}里面的代码去处理,最后执行finally之中的代码。

无论try中代码有没有异常,也无论catch是否将异常捕获到,finally中的代码都一定会被执行。

例如:当除数为0时,编译不会报错,如果没有try/catch的话,程序直接崩溃。用try/catch的话,则可以让程序运行下去,并且输出为什么出错。

扩展资料

java中try....catch的使用原则

1、当代码中可能会遇到的异常需要用try{ }catch{Exception e}来处理,否则导致程序崩溃。

2、不要在for循环里面嵌套try catch子句。

3、尽可能的减少try catch子句的嵌套,会影响性能。

4、同一个try子句中多个catch时,异常处理原则。

当一个try块中包含众多语句,可能抛出多种不同的异常,只有通过多个catch块来捕获不同的异常。而如果两个异常存在继承关系,应该把子类异常放在父类异常的前面来捕获,或者把最小范围异常放在最前面 ,范围大的放在后面。

因为是按照catch块从上往下匹配,当它匹配某一个catch块的时候,就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。

如果有finally的话进入到finally里面继续执行。Exception这个异常的根类一定要刚在最后一个catch里面,如果放在前面或者中间,任何异常都会和Exception匹配的,就会报已捕获到异常的错误。

这是一个提示出现异常的代码。try{}catch(Exception e){}

try{}里边代指出现异常的代码。catch(Exception e)中的e就是异常各类,如果你能确定那种异常,就可以用那种异常代码代替这个e。

而后边{}就是你处理异常的方法,你可以打出异常,或者是输出提示出错了,很灵活。

有时候还会有一个finally{}在最后,这个是一定会处理的代码,不会因为异常的出现会终止。

扩展资料:

try 是JAVA中常用到的关键命令。用于try..catch..finally块,进行异常捕获。

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