一 Checked异常和Runtime异常介绍
- Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。所有RuntimeException类及其子类的实例被称为Runtime异常;不是RuntimeException类及其子类的异常实例则被称为Checked异常。
- Java认为Checked异常都是可以被处理(修复)的异常,所以Java程序必须显示处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误,无法通过编译。
- 对于Checked异常处理方式有如下两种:
(1)当前方法明确知道如何处理该异常,程序应该使用try...catch块来捕获该异常,然后在对应的catch块中修改该异常。
(2)当前方法不知道如何处理这种异常,应该在定义该方法时声明抛出该异常。 - Runtime异常无需显式声明抛出,如果程序需要捕捉Runtime异常,也可以使用try...catch块来捕捉Runtime异常。
二使用throws声明抛出异常
- throws声明抛出异常的思路是:当前方法不知道应该如何这种类型的异常,该异常应该由上一级调用者处理,如果main方法也不知道应该如何处理这种类型的异常,也可以使用throws声明抛出异常,该异常将交给JVM处理。JVM对异常的处理方法是:打印异常跟踪栈信息,并中止程序运行,这就是前面程序在遇到异常后自动结束的原因。
- throws声明抛出只能在方法签名中使用,throws可以声明抛出多个异常类,多个异常类之间以逗号隔开。throws声明抛出的语法格式如下
throws ExceptionClass1 , ExceptionClass2...
三 throws应用1
1 代码示例
import java.io.*; public class ThrowsTest { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("a.txt"); } }
2 运行结果
Exception in thread "main" java.io.FileNotFoundException: a.txt (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at ThrowsTest.main(ThrowsTest.java:9)
3 结果分析
该程序不处理IOException异常,将该异常交给JVM处理,所以程序一旦遇到异常,JVM就会打印该异常的跟踪栈信息,并结束程序。
四 throws应用2
1 代码示例
import java.io.*; public class ThrowsTest2 { public static void main(String[] args) throws Exception { // 因为test()方法声明抛出IOException异常, // 所以调用该方法的代码要么处于try...catch块中, // 要么处于另一个带throws声明抛出的方法中。 test(); } public static void test()throws IOException { // 因为FileInputStream的构造器声明抛出IOException异常, // 所以调用FileInputStream的代码要么处于try...catch块中, // 要么处于另一个带throws声明抛出的方法中。 FileInputStream fis = new FileInputStream("a.txt"); } }
2 运行结果
Exception in thread "main" java.io.FileNotFoundException: a.txt (系统找不到指定的文件。)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at ThrowsTest2.test(ThrowsTest2.java:19)
at ThrowsTest2.main(ThrowsTest2.java:12)
3 结果分析
test方法声明抛出了Checked异常,则表明该方法希望它的调用者来处理该异常。main方法要么放在try块中显示捕获该异常,要么带throws声明抛出让JVM处理。
五 throws应用3
1 代码示例
import java.io.*; public class OverrideThrows { public void test()throws IOException { FileInputStream fis = new FileInputStream("a.txt"); } } class Sub extends OverrideThrows { // 子类方法声明抛出了比父类方法更大的异常 // 所以下面方法出错 public void test()throws Exception { } }
2 运行结果
编译无法通过。
3 结果分析
throws声明抛出时有一个限制:子类方法声明抛出的异常类型应该是父类方法声明抛出的异常类型的子类或相同,子类方法声明抛出的异常不允许比父类声明抛出异常多。
上面程序中Sub子类中的test()方法声明抛出Exception,该Exception是父类声明抛出异常IOException类的父类,导致程序无法通过编译。
相关推荐
•Java的异常被分为两大类:Checked异常和Runtime异常(运行时异常)。所有 RuntimeException类及其子类的实例被称为Runtime异常;不是RuntimeException类及其子类 的异常实例则被称为Checked异常。 Checked...
Java的异常类层次基于`Throwable`类,分为两大类:Checked异常和Runtime异常(运行时异常)。 - `Error`:`Error`是`Throwable`的子类,表示与虚拟机相关的问题,如系统崩溃、内存溢出等。这些错误通常是不可恢复...
通过以上分析,我们可以看到 Java 异常继承结构的复杂性,其中 Error 和 Exception 是两个不同的概念,Exception 又分为 Checked 异常和 Runtime 异常。只有通过正确地处理异常,才能编写出更加稳定、健壮的程序。
Java 提供了两种异常模式,一种是执行的时候所产生的异常(Runtime Exception),另外一种则是受控制的异常(Checked Exception)。 Checked Exception 是指在编译期检查的异常,编译器会检查这些异常是否被捕捉或...
1. 异常分类: Checked 异常和 Runtime 异常两种,Checked 异常需要明确抛出,而 Runtime 异常可以在编译时不检查。 2. 反射的用途及实现:反射可以在运行时动态获取类的信息和调用方法,实现方式是通过 java.lang....
了解Java异常的概念及处理机制,能够使用Checked异常和Runtime异常进行编程,并能够进行异常信息跟踪和异常处理。 四、结论 本资源摘要信息涵盖了Java技术点考核大纲的所有知识点,包括基础题和编程题,涵盖移动端...
Java异常分为两大类:Checked异常和Runtime异常。 1. **Checked异常**:这类异常在编译期间就需要进行处理。如果在代码中存在可能抛出Checked异常的语句,但没有相应的try-catch块或者在方法签名中使用throws声明该...
- checked异常和runtime异常的区别 - try-catch-finally语句块的使用 - throws和throw关键字的差异 9. **JVM调优**: - 堆内存结构(年轻代、老年代、永久代/元空间) - GC(垃圾收集)算法:Minor GC、Full ...
面试中可能会讨论try-catch-finally语句块、自定义异常、异常链、checked异常和runtime异常的区别。 6. **IO流**:Java的IO流用于读写数据,包括字节流和字符流,以及面向对象的流如ObjectInputStream和...
- 明确区分checked异常和runtime异常,合理使用try-catch-finally结构。 - 不应随意抛出或者忽略异常,应给出具体处理策略。 - 在finally块中释放资源,如关闭流。 6. **集合框架**: - 使用泛型限制类型,避免...
- Java的异常分为Error和Exception,其中Exception又分为checked异常和runtime异常。 42. **错误与异常的差别** - Error是系统错误,一般由虚拟机处理;Exception是可以被应用层处理的异常。 43. **异常处理机制...
##### 13.5 Checked异常和Runtime异常 - **Checked异常**:编译器要求必须处理的异常。 - **Runtime异常**:程序运行时发生的异常。 ##### 13.6 使用throws抛出异常 - 在方法声明中声明可能抛出的异常。 ##### ...
10.3 Checked异常和Runtime异常体系 367 10.3.1 使用throws声明抛出异常 367 10.4 使用throw抛出异常 369 10.4.1 抛出异常 369 10.4.2 自定义异常类 371 10.4.3 catch和throw同时使用 371 10.4.4 异常链 373 ...
Exception 则是可以捕捉的,Java 提供了两类主要的异常:runtime exception 和 checked exception。checked 异常也就是我们经常遇到的 IO 异常,以及 SQL 异常都是这种异常。对于这种异常,JAVA 编译器强制要求我们...
Java 异常体系统结构如图 1 所示,Throwable 是所有异常和错误的父类,它主要包含三个方面的内容:线程创建时执行堆栈的快照、用以描述异常或错误出现位置的消息字符串、异常或错误产生的原因。Throwable 有两个直接...
能够区分checked exception和 runtime exception 会使用 try-catch-finally 处理异常 方法声明异常 抛出异常 自定义异常类 语法错误, 运行期错误, 逻辑错误 语法错误: 没有遵循语法规则导致的错误。 运行期错误: ...
作者提出了一种有限的异常类集合设计,如图1所示,包括checked和runtime异常。checked异常用于表示可预见的意外情况,调用方法可以直接处理;而runtime异常则用于表示系统无法自行解决的问题,需要外部干预。这种...
异常类可以分为两种:Checked Exception 和 Runtime Exception。 1. Checked Exception Checked Exception 是指编译器检查的异常。这种异常需要在方法的throws子句中声明,否则编译器将报错。例如,IOException ...
在Java中,异常主要分为两大类:`Checked Exception`(检查型异常)和`Runtime Exception`(运行时异常)。其中,`Checked Exception`是编译器强制要求处理的异常,通常代表了应用程序可以预见并应该处理的错误;而`...