Java 异常

Java 异常

执行Java代码时,可能会发生各种错误: 程序员写代码时犯的错误、用户非法输入造成的错误,或其他不可预见的错误。

当发生错误时,Java通常会停止程序运行,并生成错误消息。用技术方面的话说: Java将抛出异常/exception(抛出错误)。

Java try catch

try语句可以对一个代码块,在其执行时,进行错误检测。

catch语句定义了,当try块中发生错误时,要执行的代码块,。

trycatch关键字成对出现:

语法

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);

输出将为:

允许访问 - 年龄合格


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载