Java异常是指在Java程序运行时发生的不正常情况,它会导致程序的执行中断。Java异常分为两大类:一类是受检异常(Checked Exception),另一类是非受检异常(Unchecked Exception)。
受检异常是指在编译期间就必须处理的异常,它们必须显式地由程序员进行处理。如果不处理这些异常,程序将无法通过编译。受检异常包括IOException、SQLException、ClassNotFoundException和InterruptedException等。
非受检异常是指在运行期间出现的不正常情况,它们不需要显式地由程序员进行处理。如果不处理这些异常,也不会影响到代码的正常执行。非受检异常包括NullPointerException、ArrayIndexOutOfBoundsException、IllegalArgumentException和NumberFormatException等。
try { // 可能出错的代码 } catch (IOException e) { // 处理 IO 异常 } catch (SQLException e) { // 处理 SQL 异常 } catch (NullPointerException e) { // 处理 NullPointer 异常 } catch (ArrayIndexOutOfBoundsException e) { // 处理 ArrayIndexOutOfBounds 异常 } catch (IllegalArgumentException e) { // 处理 IllegalArgument 异常 } catch (NumberFormatException e) { // 处理 NumberFormat 异常 }
异常是在运行时在代码序列中出现的异常状况。例如,读取一个不存在的文件。
Java异常是描述异常条件的对象发生在一段代码中。
Java异常处理通过五个关键字管理: try,catch,throw,throws
和finally。
try
block包含要监视的程序语句异常。
如果在块中发生异常,则抛出异常。
catch
语句可以捕获异常并以合理的方式处理它。
要手动抛出异常,请使用关键字throw。
任何抛出的异常一个方法必须由一个 throws
子句指定。
任何代码绝对必须是在try块完成之后执行的命令被放在 finally
块中。
要处理一个异常,我们把可能有的代码在try ... catch语句中的异常。
try { // block of code to monitor for errors } catch (ExceptionType1 exOb) { // exception handler for ExceptionType1 } catch (ExceptionType2 exOb) { // exception handler for ExceptionType2 }
可能有异常的程序语句包含在 try
块中。异常处理程序使用 catch
语句进行编码。
这里, ExceptionType
是发生的异常的类型。
在try块和catch子句中封装要监视的代码。
下面的程序包括一个try块和一个catch子句处理由除法生成的ArithmeticException错误:
public class Main { public static void main(String args[]) { int d, a; try { // monitor a block of code. d = 0; a = 42 / d; System.out.println("This will not be printed."); } catch (ArithmeticException e) { // catch divide-by-zero error System.out.println("Division by zero."); } System.out.println("After catch statement."); } }
此程序生成以下输出:
一旦抛出异常,程序控制就会从try块转移到catch块中。执行从未从catch返回到try块。
以下代码处理异常并继续。
import java.util.Random; public class Main { public static void main(String args[]) { int a = 0, b = 0, c = 0; Random r = new Random(); for (int i = 0; i < 32000; i++) { try { b = r.nextInt(); c = r.nextInt(); a = 12345 / (b / c); } catch (ArithmeticException e) { System.out.println("Division by zero."); a = 0; // set a to zero and continue } System.out.println("a: " + a); } } }
上面的代码生成以下结果。
Java教程 -Java类变量三种类型的变量Java支持三种不同生存期的变量:成员变量方法局部变量静态变量类成员变量在创建实例时创建类...
Java正则表达式教程 -Java正则表达式组我们可以通过括号将多个字符组合为一个单位。例如,(ab)。正则表达式中的每个组都有一个组...
JPA教程 -JPA ID注释示例来自JPA的@Id注释用于将Java字段标记为数据库表主键列。public class Person{@Idprivate long id;...上...
JPA教程 -JPA ID表生成器示例我们可以使用一个表作为id生成表。以下代码使用@TableGenerator创建表并设置id值的初始值。然后它使...
JPA教程 -JPA ElementCollection映射关键实体示例在JPA中,我们可以将通用类型的Map映射到数据库。以下代码定义了一个通用映射,...