Java中的异常和错误是程序中常见的问题,而异常和错误都是由Java的基类所定义的。Java的异常基类是Throwable类,而它的子类分为两种:异常和错误。
异常是由代码编写者所预见的,通常可恢复并不致命的错误。它的基类是Exception类。异常包括了运行时异常和受检查异常两种。运行时异常是指由程序运行中所产生的异常,编写者可能预见到它的发生,但无法完全避免。编写者在代码中通常不会显式地声明这些异常,它们会在程序运行时才出现。例如,NullPointerException、ArrayIndexOutOfBoundsException、ClassCastException等。受检查异常则是指编写者在代码中显式地声明的异常,通常是由外部因素(例如文件读取、网络连接)所产生的异常,需要编写者在代码中进行处理。受检查异常的基类是Throwable类的子类IOException、SQLException等。
错误通常是由预见不到或无法恢复的问题所产生的,例如JVM自身的异常、栈溢出等。它的基类是Error类。与异常不同,错误通常不能通过代码来进行修复,只能通过程序重启或是其他手段来进行解决。
try { // 代码块 } catch (Exception e) { // 可恢复错误 } catch (Error err) { // 不可恢复错误 }
在Java中,处理异常和错误通常是通过try-catch块来进行。try块中包含了可能产生异常或错误的代码,如果try块中的代码出现问题,则会抛出异常或错误。catch块则是对异常或错误进行捕获和处理的地方。在多重catch块中,通常先处理可恢复的异常,后处理不可恢复的错误。